swh.web 0.16.2__py3-none-any.whl → 0.16.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- swh/web/add_forge_now/templates/add-forge-request-dashboard.html +5 -2
- swh/web/api/views/origin.py +2 -2
- swh/web/archive_coverage/views.py +4 -7
- swh/web/badges/__init__.py +1 -1
- swh/web/badges/assets/index.js +40 -14
- swh/web/browse/assets/browse/browse.css +5 -0
- swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/browse/templates/browse-iframe.html +10 -7
- swh/web/browse/templates/browse-origin-visits.html +2 -2
- swh/web/browse/templates/browse-revision.html +5 -3
- swh/web/browse/templates/includes/content-display.html +10 -5
- swh/web/browse/templates/includes/readme-display.html +3 -2
- swh/web/browse/templates/includes/show-metadata.html +3 -2
- swh/web/browse/templates/includes/sidetabs.html +9 -7
- swh/web/browse/templates/includes/top-navigation.html +2 -1
- swh/web/browse/tests/views/test_origin.py +3 -1
- swh/web/deposit/templates/deposit-admin.html +6 -1
- swh/web/inbound_email/handle_message.py +1 -1
- swh/web/inbound_email/tests/test_utils.py +2 -2
- swh/web/save_code_now/assets/origin-save-admin.js +5 -2
- swh/web/save_code_now/assets/origin-save.js +9 -4
- swh/web/static/css/{archive_coverage.70eba3d32ed75472d638.css → archive_coverage.df54ae8fe40453ecd972.css} +2 -2
- swh/web/static/css/archive_coverage.df54ae8fe40453ecd972.css.map +1 -0
- swh/web/static/css/browse.633076034514e6a3977d.css +2 -0
- swh/web/static/css/browse.633076034514e6a3977d.css.map +1 -0
- swh/web/static/css/guided_tour.d496a0c252e1bb193496.css +2 -0
- swh/web/static/css/{guided_tour.62c03630e944b8b8d9ad.css.map → guided_tour.d496a0c252e1bb193496.css.map} +1 -1
- swh/web/static/css/{highlightjs.0c1b181eb006699a4c3e.css → highlightjs.37238c93749cb449800d.css} +2 -2
- swh/web/static/css/highlightjs.37238c93749cb449800d.css.map +1 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css +2 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css.map +1 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css +24 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css.map +1 -0
- swh/web/static/css/{webapp.4655323082740f1a4862.css → webapp.e995faa24f8c84db0d06.css} +2 -2
- swh/web/static/css/webapp.e995faa24f8c84db0d06.css.map +1 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js +3 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js.map +1 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js +3 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js.map +1 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js +3 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.LICENSE.txt +6 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.map +1 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js +3 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js.map +1 -0
- swh/web/static/js/deposit.d47e18177b16ccdbdb84.js.map +1 -1
- swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js → highlightjs.516e784a1e62011c7605.js} +3 -3
- swh/web/static/js/highlightjs.516e784a1e62011c7605.js.map +1 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js +3 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js.map +1 -0
- swh/web/static/js/mathjax.98ef576f318f1a0b0c4a.js.map +1 -1
- swh/web/static/js/pdf.worker.min.js +1 -1
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js +3 -0
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js.map +1 -0
- swh/web/static/js/{revision.ac9293e1b984b4d4d909.js → revision.122a31614a5f9abffc3c.js} +3 -3
- swh/web/static/js/revision.122a31614a5f9abffc3c.js.map +1 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js +3 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js.map +1 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js +3 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js.map +1 -0
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js +3 -0
- swh/web/static/js/{vendors.2eeadf2e0831a7a82b6d.js.LICENSE.txt → vendors.f62cb86cf3b92ae280ee.js.LICENSE.txt} +5 -1
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js.map +1 -0
- swh/web/static/js/webapp.e93873983e400db67bf8.js +3 -0
- swh/web/static/js/{webapp.26efc059a8f5fe204240.js.LICENSE.txt → webapp.e93873983e400db67bf8.js.LICENSE.txt} +1 -1
- swh/web/static/js/webapp.e93873983e400db67bf8.js.map +1 -0
- swh/web/static/jssources/@myriaddreamin/highlighter-typst/dist/esm/contrib/hljs/typst-lite.bundle.js +180 -111
- swh/web/static/jssources/assets/src/utils/functions.js +5 -5
- swh/web/static/jssources/core-js/LICENSE.txt +1 -1
- swh/web/static/jssources/core-js/internals/shared-store.js +3 -3
- swh/web/static/jssources/core-js/modules/es.object.group-by.js +2 -1
- swh/web/static/jssources/datatables.net/js/dataTables.mjs +108 -44
- swh/web/static/jssources/datatables.net-fixedheader/js/dataTables.fixedHeader.mjs +10 -4
- swh/web/static/jssources/datatables.net-fixedheader/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.mjs +81 -0
- swh/web/static/jssources/dompurify/dist/purify.es.mjs +35 -12
- swh/web/static/jssources/highlightjs-line-numbers.js/src/highlightjs-line-numbers.js +1 -1
- swh/web/static/jssources/highlightjs-macaulay2/dist/macaulay2.min.js +3 -3
- swh/web/static/jssources/jslicenses.json +1 -1
- swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +885 -596
- swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +4982 -4566
- swh/web/static/jssources/swh/web/badges/assets/index.js +40 -14
- swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/static/jssources/swh/web/save_code_now/assets/origin-save-admin.js +5 -2
- swh/web/static/jssources/swh/web/save_code_now/assets/origin-save.js +9 -4
- swh/web/static/jssources/swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/static/security.txt +3 -0
- swh/web/static/webpack-stats.json +240 -235
- swh/web/tests/views.py +9 -8
- swh/web/utils/archive.py +1 -1
- swh/web/utils/swh_templatetags.py +8 -13
- swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/webapp/assets/webapp/webapp.css +8 -0
- swh/web/webapp/templates/layout.html +13 -10
- swh/web/webapp/tests/test_views.py +16 -1
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/METADATA +2 -3
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/RECORD +112 -107
- swh/web/static/css/archive_coverage.70eba3d32ed75472d638.css.map +0 -1
- swh/web/static/css/browse.0a250d3b07ce628588a5.css +0 -2
- swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +0 -1
- swh/web/static/css/guided_tour.62c03630e944b8b8d9ad.css +0 -2
- swh/web/static/css/highlightjs.0c1b181eb006699a4c3e.css.map +0 -1
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css +0 -2
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css.map +0 -1
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css +0 -24
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css.map +0 -1
- swh/web/static/css/webapp.4655323082740f1a4862.css.map +0 -1
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js +0 -3
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js.map +0 -1
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js +0 -3
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js.map +0 -1
- swh/web/static/js/badges.f02607179ad0264e7522.js +0 -2
- swh/web/static/js/badges.f02607179ad0264e7522.js.map +0 -1
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js +0 -3
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js.map +0 -1
- swh/web/static/js/highlightjs.dc9b8354c69d942fad33.js.map +0 -1
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js +0 -3
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js.map +0 -1
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js +0 -3
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js.map +0 -1
- swh/web/static/js/revision.ac9293e1b984b4d4d909.js.map +0 -1
- swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js +0 -3
- swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js.map +0 -1
- swh/web/static/js/vault.1229427aed95c78d4ee2.js +0 -3
- swh/web/static/js/vault.1229427aed95c78d4ee2.js.map +0 -1
- swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js +0 -3
- swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js.map +0 -1
- swh/web/static/js/webapp.26efc059a8f5fe204240.js +0 -3
- swh/web/static/js/webapp.26efc059a8f5fe204240.js.map +0 -1
- /swh/web/static/js/{add_forge_now.e25d1ad2ab6c45e60b67.js.LICENSE.txt → add_forge_now.e85d09463e38c1e19632.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{auth.bd2f475f49caa9f84e99.js.LICENSE.txt → auth.06c697ab58b81d08ebce.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{browse.fc5d5fafca71e03d2add.js.LICENSE.txt → browse.3f22819b69002c8b6407.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js.LICENSE.txt → highlightjs.516e784a1e62011c7605.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{mailmap.631c53127ba5511ebda7.js.LICENSE.txt → mailmap.de04f685e56eff5b627f.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{pdfjs.40675676ebcbdde8baab.js.LICENSE.txt → pdfjs.018d9890c044b3612ece.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{revision.ac9293e1b984b4d4d909.js.LICENSE.txt → revision.122a31614a5f9abffc3c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{save_code_now.369ff7f28aaf74e7728e.js.LICENSE.txt → save_code_now.d4d8fc47420a4badb683.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{vault.1229427aed95c78d4ee2.js.LICENSE.txt → vault.d2ec3dd1d84a8d038a6c.js.LICENSE.txt} +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/WHEEL +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/AUTHORS +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/LICENSE +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/pdfjs.018d9890c044b3612ece.js","mappings":"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","sources":["webpack://swh/./node_modules/pdfjs-dist/legacy/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.4.394\n * pdfjsBuild = 2cc809ade\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ 34:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n\n/***/ 81:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar getIteratorMethod = __webpack_require__(851);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n\n/***/ 116:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n find: function find(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n\n\n/***/ }),\n\n/***/ 283:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar hasOwn = __webpack_require__(9297);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\nvar inspectSource = __webpack_require__(3706);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n/***/ }),\n\n/***/ 350:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar hasOwn = __webpack_require__(9297);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n\n/***/ 397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 421:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 456:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\n\nvar numberToString = uncurryThis(1.1.toString);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.toHex || !(function () {\n try {\n var target = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);\n return target.toHex() === 'ffffffffffffffff';\n } catch (error) {\n return false;\n }\n})();\n\n// `Uint8Array.prototype.toHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n toHex: function toHex() {\n anUint8Array(this);\n notDetached(this.buffer);\n var result = '';\n for (var i = 0, length = this.length; i < length; i++) {\n var hex = numberToString(this[i], 16);\n result += hex.length === 1 ? '0' + hex : hex;\n }\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 507:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n\n\n/***/ }),\n\n/***/ 531:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorFlattenable = __webpack_require__(8646);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorClose = __webpack_require__(9539);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE\n && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 616:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n\n/***/ 655:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n\n/***/ 679:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPrototypeOf = __webpack_require__(1625);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n\n/***/ 684:\n/***/ ((module) => {\n\n\n// Should throw an error on invalid iterator\n// https://issues.chromium.org/issues/336839115\nmodule.exports = function (methodName, argument) {\n // eslint-disable-next-line es/no-iterator -- required for testing\n var method = typeof Iterator == 'function' && Iterator.prototype[methodName];\n if (method) try {\n method.call({ next: null }, argument).next();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 741:\n/***/ ((module) => {\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n\n/***/ 757:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar isCallable = __webpack_require__(4901);\nvar isPrototypeOf = __webpack_require__(1625);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n\n/***/ 851:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\nvar getMethod = __webpack_require__(5966);\nvar isNullOrUndefined = __webpack_require__(4117);\nvar Iterators = __webpack_require__(6269);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (options) {\n var alphabet = options && options.alphabet;\n if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n throw new $TypeError('Incorrect `alphabet` option');\n};\n\n\n/***/ }),\n\n/***/ 1072:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 1103:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n\n/***/ 1108:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n\n\n/***/ }),\n\n/***/ 1148:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n every: function every(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 1181:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8622);\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar hasOwn = __webpack_require__(9297);\nvar shared = __webpack_require__(7629);\nvar sharedKey = __webpack_require__(6119);\nvar hiddenKeys = __webpack_require__(421);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 1291:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar trunc = __webpack_require__(741);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n\n/***/ 1385:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar iteratorClose = __webpack_require__(9539);\n\nmodule.exports = function (iters, kind, value) {\n for (var i = iters.length - 1; i >= 0; i--) {\n if (iters[i] === undefined) continue;\n try {\n value = iteratorClose(iters[i].iterator, kind, value);\n } catch (error) {\n kind = 'throw';\n value = error;\n }\n }\n if (kind === 'throw') throw value;\n return value;\n};\n\n\n/***/ }),\n\n/***/ 1548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar fails = __webpack_require__(9039);\nvar V8 = __webpack_require__(9519);\nvar ENVIRONMENT = __webpack_require__(4215);\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n\n\n/***/ }),\n\n/***/ 1549:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(6632);\n\n\n/***/ }),\n\n/***/ 1625:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n\n/***/ 1689:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar apply = __webpack_require__(8745);\nvar slice = __webpack_require__(7680);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\nvar aCallable = __webpack_require__(9306);\nvar perform = __webpack_require__(1103);\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n Promise['try'](function (argument) {\n ACCEPT_ARGUMENTS = argument === 8;\n }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n 'try': function (callbackfn /* , ...args */) {\n var args = arguments.length > 1 ? slice(arguments, 1) : [];\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(function () {\n return apply(aCallable(callbackfn), undefined, args);\n });\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 1698:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar union = __webpack_require__(4204);\nvar setMethodGetKeysBeforeCloning = __webpack_require__(9835);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar FORCED = !setMethodAcceptSetLike('union') || !setMethodGetKeysBeforeCloning('union');\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n union: union\n});\n\n\n/***/ }),\n\n/***/ 1701:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });\nvar mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 1767:\n/***/ ((module) => {\n\n\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/ecma262/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n\n\n/***/ }),\n\n/***/ 1828:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\nvar toIndexedObject = __webpack_require__(5397);\nvar indexOf = (__webpack_require__(9617).indexOf);\nvar hiddenKeys = __webpack_require__(421);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2106:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar makeBuiltIn = __webpack_require__(283);\nvar defineProperty = __webpack_require__(4913);\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n/***/ }),\n\n/***/ 2140:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 2195:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n\n/***/ 2211:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 2303:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\n\nvar Uint8Array = globalThis.Uint8Array;\nvar SyntaxError = globalThis.SyntaxError;\nvar parseInt = globalThis.parseInt;\nvar min = Math.min;\nvar NOT_HEX = /[^\\da-f]/i;\nvar exec = uncurryThis(NOT_HEX.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (string, into) {\n var stringLength = string.length;\n if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;\n var bytes = into || new Uint8Array(maxLength);\n var read = 0;\n var written = 0;\n while (written < maxLength) {\n var hexits = stringSlice(string, read, read += 2);\n if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n bytes[written++] = parseInt(hexits, 16);\n }\n return { bytes: bytes, read: read };\n};\n\n\n/***/ }),\n\n/***/ 2360:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(8551);\nvar definePropertiesModule = __webpack_require__(6801);\nvar enumBugKeys = __webpack_require__(8727);\nvar hiddenKeys = __webpack_require__(421);\nvar html = __webpack_require__(397);\nvar documentCreateElement = __webpack_require__(4055);\nvar sharedKey = __webpack_require__(6119);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 2475:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSupersetOf = __webpack_require__(8527);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n return !result;\n});\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSupersetOf: isSupersetOf\n});\n\n\n/***/ }),\n\n/***/ 2489:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });\nvar filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 2529:\n/***/ ((module) => {\n\n\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n/***/ }),\n\n/***/ 2603:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toString = __webpack_require__(655);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n\n/***/ 2652:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar bind = __webpack_require__(6080);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar isArrayIteratorMethod = __webpack_require__(4209);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getIterator = __webpack_require__(81);\nvar getIteratorMethod = __webpack_require__(851);\nvar iteratorClose = __webpack_require__(9539);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal');\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n\n/***/ 2777:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isObject = __webpack_require__(34);\nvar isSymbol = __webpack_require__(757);\nvar getMethod = __webpack_require__(5966);\nvar ordinaryToPrimitive = __webpack_require__(4270);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n\n/***/ 2787:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar isCallable = __webpack_require__(4901);\nvar toObject = __webpack_require__(8981);\nvar sharedKey = __webpack_require__(6119);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 2796:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 2804:\n/***/ ((module) => {\n\n\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nvar base64Alphabet = commonAlphabet + '+/';\nvar base64UrlAlphabet = commonAlphabet + '-_';\n\nvar inverse = function (characters) {\n // TODO: use `Object.create(null)` in `core-js@4`\n var result = {};\n var index = 0;\n for (; index < 64; index++) result[characters.charAt(index)] = index;\n return result;\n};\n\nmodule.exports = {\n i2c: base64Alphabet,\n c2i: inverse(base64Alphabet),\n i2cUrl: base64UrlAlphabet,\n c2iUrl: inverse(base64UrlAlphabet)\n};\n\n\n/***/ }),\n\n/***/ 2812:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n\n/***/ 2839:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n\n\n/***/ }),\n\n/***/ 2967:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar isObject = __webpack_require__(34);\nvar requireObjectCoercible = __webpack_require__(7750);\nvar aPossiblePrototype = __webpack_require__(3506);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 3068:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// based on Shewchuk's algorithm for exactly floating point addition\n// adapted from https://github.com/tc39/proposal-math-sum/blob/3513d58323a1ae25560e8700aa5294500c6c9287/polyfill/polyfill.mjs\nvar $ = __webpack_require__(6518);\nvar uncurryThis = __webpack_require__(9504);\nvar iterate = __webpack_require__(2652);\n\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar $Infinity = Infinity;\nvar $NaN = NaN;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar push = uncurryThis([].push);\n\nvar POW_2_1023 = pow(2, 1023);\nvar MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740992\nvar MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308\nvar MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292\n\nvar NOT_A_NUMBER = {};\nvar MINUS_INFINITY = {};\nvar PLUS_INFINITY = {};\nvar MINUS_ZERO = {};\nvar FINITE = {};\n\n// prerequisite: abs(x) >= abs(y)\nvar twosum = function (x, y) {\n var hi = x + y;\n var lo = y - (hi - x);\n return { hi: hi, lo: lo };\n};\n\n// `Math.sumPrecise` method\n// https://github.com/tc39/proposal-math-sum\n$({ target: 'Math', stat: true }, {\n // eslint-disable-next-line max-statements -- ok\n sumPrecise: function sumPrecise(items) {\n var numbers = [];\n var count = 0;\n var state = MINUS_ZERO;\n\n iterate(items, function (n) {\n if (++count >= MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');\n if (typeof n != 'number') throw new $TypeError('Value is not a number');\n if (state !== NOT_A_NUMBER) {\n // eslint-disable-next-line no-self-compare -- NaN check\n if (n !== n) state = NOT_A_NUMBER;\n else if (n === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;\n else if (n === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;\n else if ((n !== 0 || (1 / n) === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {\n state = FINITE;\n push(numbers, n);\n }\n }\n });\n\n switch (state) {\n case NOT_A_NUMBER: return $NaN;\n case MINUS_INFINITY: return -$Infinity;\n case PLUS_INFINITY: return $Infinity;\n case MINUS_ZERO: return -0;\n }\n\n var partials = [];\n var overflow = 0; // conceptually 2 ** 1024 times this value; the final partial is biased by this amount\n var x, y, sum, hi, lo, tmp;\n\n for (var i = 0; i < numbers.length; i++) {\n x = numbers[i];\n var actuallyUsedPartials = 0;\n for (var j = 0; j < partials.length; j++) {\n y = partials[j];\n if (abs(x) < abs(y)) {\n tmp = x;\n x = y;\n y = tmp;\n }\n sum = twosum(x, y);\n hi = sum.hi;\n lo = sum.lo;\n if (abs(hi) === $Infinity) {\n var sign = hi === $Infinity ? 1 : -1;\n overflow += sign;\n\n x = (x - (sign * POW_2_1023)) - (sign * POW_2_1023);\n if (abs(x) < abs(y)) {\n tmp = x;\n x = y;\n y = tmp;\n }\n sum = twosum(x, y);\n hi = sum.hi;\n lo = sum.lo;\n }\n if (lo !== 0) partials[actuallyUsedPartials++] = lo;\n x = hi;\n }\n partials.length = actuallyUsedPartials;\n if (x !== 0) push(partials, x);\n }\n\n // compute the exact sum of partials, stopping once we lose precision\n var n = partials.length - 1;\n hi = 0;\n lo = 0;\n\n if (overflow !== 0) {\n var next = n >= 0 ? partials[n] : 0;\n n--;\n if (abs(overflow) > 1 || (overflow > 0 && next > 0) || (overflow < 0 && next < 0)) {\n return overflow > 0 ? $Infinity : -$Infinity;\n }\n // here we actually have to do the arithmetic\n // drop a factor of 2 so we can do it without overflow\n // assert(abs(overflow) === 1)\n sum = twosum(overflow * POW_2_1023, next / 2);\n hi = sum.hi;\n lo = sum.lo;\n lo *= 2;\n if (abs(2 * hi) === $Infinity) {\n // rounding to the maximum value\n if (hi > 0) {\n return (hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0) ? MAX_DOUBLE : $Infinity;\n } return (hi === -POW_2_1023 && lo === (MAX_ULP / 2) && n >= 0 && partials[n] > 0) ? -MAX_DOUBLE : -$Infinity;\n }\n\n if (lo !== 0) {\n partials[++n] = lo;\n lo = 0;\n }\n\n hi *= 2;\n }\n\n while (n >= 0) {\n sum = twosum(hi, partials[n--]);\n hi = sum.hi;\n lo = sum.lo;\n if (lo !== 0) break;\n }\n\n if (n >= 0 && ((lo < 0 && partials[n] < 0) || (lo > 0 && partials[n] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y === x - hi) hi = x;\n }\n\n return hi;\n }\n});\n\n\n/***/ }),\n\n/***/ 3167:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar setPrototypeOf = __webpack_require__(2967);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 3238:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\nvar arrayBufferByteLength = __webpack_require__(7394);\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 3392:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n\n/***/ 3440:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(result, e)) remove(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3463:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'string') return argument;\n throw new $TypeError('Argument is not a string');\n};\n\n\n/***/ }),\n\n/***/ 3506:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPossiblePrototype = __webpack_require__(3925);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n\n/***/ 3579:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 3650:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar isCallable = __webpack_require__(4901);\nvar store = __webpack_require__(7629);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 3717:\n/***/ ((__unused_webpack_module, exports) => {\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 3724:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n\n\n/***/ }),\n\n/***/ 3789:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar call = __webpack_require__(9565);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar getIteratorDirect = __webpack_require__(1767);\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n\n\n/***/ }),\n\n/***/ 3838:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar size = __webpack_require__(5170);\nvar iterate = __webpack_require__(8469);\nvar getSetRecord = __webpack_require__(3789);\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n\n\n/***/ }),\n\n/***/ 3853:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isDisjointFrom = __webpack_require__(4449);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n return !result;\n});\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isDisjointFrom: isDisjointFrom\n});\n\n\n/***/ }),\n\n/***/ 3925:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n\n\n/***/ }),\n\n/***/ 3972:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (argument === undefined || isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object or undefined');\n};\n\n\n/***/ }),\n\n/***/ 4055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 4114:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar toObject = __webpack_require__(8981);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar setArrayLength = __webpack_require__(4527);\nvar doesNotExceedSafeInteger = __webpack_require__(6837);\nvar fails = __webpack_require__(9039);\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n/***/ }),\n\n/***/ 4117:\n/***/ ((module) => {\n\n\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n/***/ }),\n\n/***/ 4149:\n/***/ ((module) => {\n\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n // eslint-disable-next-line no-self-compare -- NaN check\n if (it === it) return it;\n throw new $RangeError('NaN is not allowed');\n};\n\n\n/***/ }),\n\n/***/ 4154:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $TypeError = TypeError;\n\n// Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n// If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\nmodule.exports = function (argument) {\n if (classof(argument) === 'Uint8Array') return argument;\n throw new $TypeError('Argument is not an Uint8Array');\n};\n\n\n/***/ }),\n\n/***/ 4204:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar add = (__webpack_require__(4402).add);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4209:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\nvar Iterators = __webpack_require__(6269);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 4215:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global Bun, Deno -- detection */\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\nvar classof = __webpack_require__(2195);\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n\n\n/***/ }),\n\n/***/ 4226:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar aString = __webpack_require__(3463);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar $fromHex = __webpack_require__(2303);\n\n// `Uint8Array.prototype.setFromHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n setFromHex: function setFromHex(string) {\n anUint8Array(this);\n aString(string);\n notDetached(this.buffer);\n var read = $fromHex(string, this).read;\n return { read: read, written: read / 2 };\n }\n});\n\n\n/***/ }),\n\n/***/ 4235:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(3068);\n\n\n/***/ }),\n\n/***/ 4270:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 4376:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(2195);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4402:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n/***/ }),\n\n/***/ 4449:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getBuiltInNodeModule = __webpack_require__(9429);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n\n\n/***/ }),\n\n/***/ 4495:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(9519);\nvar fails = __webpack_require__(9039);\nvar globalThis = __webpack_require__(4576);\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n\n/***/ 4527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar isArray = __webpack_require__(4376);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n/***/ }),\n\n/***/ 4549:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n var Iterator = globalThis.Iterator;\n var IteratorPrototype = Iterator && Iterator.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n var CLOSED = false;\n\n if (method) try {\n method.call({\n next: function () { return { done: true }; },\n 'return': function () { CLOSED = true; }\n }, -1);\n } catch (error) {\n // https://bugs.webkit.org/show_bug.cgi?id=291195\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n\n if (!CLOSED) return method;\n};\n\n\n/***/ }),\n\n/***/ 4576:\n/***/ (function(module) {\n\n\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 4603:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4628:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n});\n\n\n/***/ }),\n\n/***/ 4644:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar hasOwn = __webpack_require__(9297);\nvar classof = __webpack_require__(6955);\nvar tryToString = __webpack_require__(6823);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getPrototypeOf = __webpack_require__(2787);\nvar setPrototypeOf = __webpack_require__(2967);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar uid = __webpack_require__(3392);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 4659:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n\n\n/***/ }),\n\n/***/ 4901:\n/***/ ((module) => {\n\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n\n/***/ 4913:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar anObject = __webpack_require__(8551);\nvar toPropertyKey = __webpack_require__(6969);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nvar createSetLikeWithInfinitySize = function (size) {\n return {\n size: size,\n has: function () {\n return true;\n },\n keys: function () {\n throw new Error('e');\n }\n };\n};\n\nmodule.exports = function (name, callback) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17 implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n // also covered engines with\n // https://bugs.webkit.org/show_bug.cgi?id=272679\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n if (!callback) return true;\n // early V8 implementation bug\n // https://issues.chromium.org/issues/351332634\n try {\n new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n return false;\n } catch (error) {\n var set = new Set();\n set.add(1);\n set.add(2);\n return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n }\n }\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ }),\n\n/***/ 4972:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar notANaN = __webpack_require__(4149);\nvar toPositiveInteger = __webpack_require__(9590);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar takeWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('take', RangeError);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n if (!this.remaining--) {\n this.done = true;\n return iteratorClose(iterator, 'normal', undefined);\n }\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return result.value;\n});\n\n// `Iterator.prototype.take` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.take\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || takeWithoutClosingOnEarlyError }, {\n take: function take(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (takeWithoutClosingOnEarlyError) return call(takeWithoutClosingOnEarlyError, this, remaining);\n\n return new IteratorProxy(getIteratorDirect(this), {\n remaining: remaining\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 4979:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar defineProperty = (__webpack_require__(4913).f);\nvar hasOwn = __webpack_require__(9297);\nvar anInstance = __webpack_require__(679);\nvar inheritIfRequired = __webpack_require__(3167);\nvar normalizeStringArgument = __webpack_require__(2603);\nvar DOMExceptionConstants = __webpack_require__(5002);\nvar clearErrorStack = __webpack_require__(8574);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 5002:\n/***/ ((module) => {\n\n\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n/***/ }),\n\n/***/ 5024:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar symmetricDifference = __webpack_require__(3650);\nvar setMethodGetKeysBeforeCloning = __webpack_require__(9835);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar FORCED = !setMethodAcceptSetLike('symmetricDifference') || !setMethodGetKeysBeforeCloning('symmetricDifference');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n symmetricDifference: symmetricDifference\n});\n\n\n/***/ }),\n\n/***/ 5031:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar getOwnPropertyNamesModule = __webpack_require__(8480);\nvar getOwnPropertySymbolsModule = __webpack_require__(3717);\nvar anObject = __webpack_require__(8551);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 5169:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isDetached = __webpack_require__(3238);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 5170:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar SetHelpers = __webpack_require__(4402);\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n\n\n/***/ }),\n\n/***/ 5213:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar arrayFromConstructorAndList = __webpack_require__(5370);\nvar $fromBase64 = __webpack_require__(9143);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.fromBase64 || !function () {\n // Webkit not throw an error on odd length string\n try {\n Uint8Array.fromBase64('a');\n return;\n } catch (error) { /* empty */ }\n try {\n Uint8Array.fromBase64('', null);\n } catch (error) {\n return true;\n }\n}();\n\n// `Uint8Array.fromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', stat: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n fromBase64: function fromBase64(string /* , options */) {\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\n return arrayFromConstructorAndList(Uint8Array, result.bytes);\n }\n});\n\n\n/***/ }),\n\n/***/ 5370:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 5397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(7055);\nvar requireObjectCoercible = __webpack_require__(7750);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 5610:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 5623:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(456);\n\n\n/***/ }),\n\n/***/ 5636:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar toIndex = __webpack_require__(7696);\nvar notDetached = __webpack_require__(5169);\nvar arrayBufferByteLength = __webpack_require__(7394);\nvar detachTransferable = __webpack_require__(4483);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n\n\n/***/ }),\n\n/***/ 5745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar store = __webpack_require__(7629);\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n\n\n/***/ }),\n\n/***/ 5781:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar getBuiltIn = __webpack_require__(7751);\nvar validateArgumentsLength = __webpack_require__(2812);\nvar toString = __webpack_require__(655);\nvar USE_NATIVE_URL = __webpack_require__(7416);\n\nvar URL = getBuiltIn('URL');\n\n// `URL.parse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n parse: function parse(url) {\n var length = validateArgumentsLength(arguments.length, 1);\n var urlString = toString(url);\n var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n try {\n return new URL(urlString, base);\n } catch (error) {\n return null;\n }\n }\n});\n\n\n/***/ }),\n\n/***/ 5854:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n\n\n/***/ }),\n\n/***/ 5876:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSubsetOf = __webpack_require__(3838);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n return result;\n});\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSubsetOf: isSubsetOf\n});\n\n\n/***/ }),\n\n/***/ 5917:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\nvar createElement = __webpack_require__(4055);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n\n\n/***/ }),\n\n/***/ 5966:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar isNullOrUndefined = __webpack_require__(4117);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n\n/***/ 6043:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ 6080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(7476);\nvar aCallable = __webpack_require__(9306);\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 6119:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar shared = __webpack_require__(5745);\nvar uid = __webpack_require__(3392);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 6193:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar ENVIRONMENT = __webpack_require__(4215);\n\nmodule.exports = ENVIRONMENT === 'NODE';\n\n\n/***/ }),\n\n/***/ 6198:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toLength = __webpack_require__(8014);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n\n/***/ 6269:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 6279:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar anObject = __webpack_require__(8551);\nvar iteratorClose = __webpack_require__(9539);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n\n/***/ 6395:\n/***/ ((module) => {\n\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 6518:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getOwnPropertyDescriptor = (__webpack_require__(7347).f);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineGlobalProperty = __webpack_require__(9433);\nvar copyConstructorProperties = __webpack_require__(7740);\nvar isForced = __webpack_require__(2796);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 6573:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isDetached = __webpack_require__(3238);\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 6632:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar $fromBase64 = __webpack_require__(9143);\nvar anUint8Array = __webpack_require__(4154);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !function () {\n var target = new Uint8Array([255, 255, 255, 255, 255]);\n try {\n target.setFromBase64('', null);\n return;\n } catch (error) { /* empty */ }\n // Webkit not throw an error on odd length string\n try {\n target.setFromBase64('a');\n return;\n } catch (error) { /* empty */ }\n try {\n target.setFromBase64('MjYyZg===');\n } catch (error) {\n return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n }\n}();\n\n// `Uint8Array.prototype.setFromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n setFromBase64: function setFromBase64(string /* , options */) {\n anUint8Array(this);\n\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n\n return { read: result.read, written: result.written };\n }\n});\n\n\n/***/ }),\n\n/***/ 6699:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 6706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar aCallable = __webpack_require__(9306);\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n/***/ }),\n\n/***/ 6801:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar definePropertyModule = __webpack_require__(4913);\nvar anObject = __webpack_require__(8551);\nvar toIndexedObject = __webpack_require__(5397);\nvar objectKeys = __webpack_require__(1072);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 6823:\n/***/ ((module) => {\n\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n\n/***/ 6837:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 6840:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar definePropertyModule = __webpack_require__(4913);\nvar makeBuiltIn = __webpack_require__(283);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 6955:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\nvar isCallable = __webpack_require__(4901);\nvar classofRaw = __webpack_require__(2195);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 6969:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\nvar isSymbol = __webpack_require__(757);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n\n/***/ 6980:\n/***/ ((module) => {\n\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 7040:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 7055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar classof = __webpack_require__(2195);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n\n/***/ 7080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar has = (__webpack_require__(4402).has);\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7347:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar call = __webpack_require__(9565);\nvar propertyIsEnumerableModule = __webpack_require__(8773);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar toIndexedObject = __webpack_require__(5397);\nvar toPropertyKey = __webpack_require__(6969);\nvar hasOwn = __webpack_require__(9297);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 7394:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar classof = __webpack_require__(2195);\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n\n\n/***/ }),\n\n/***/ 7416:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'https://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'https://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('https://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('https://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('https://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 7476:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classofRaw = __webpack_require__(2195);\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n/***/ }),\n\n/***/ 7566:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 7588:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n forEach: function forEach(fn) {\n anObject(this);\n try {\n aCallable(fn);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n fn(value, counter++);\n }, { IS_RECORD: true });\n }\n});\n\n\n/***/ }),\n\n/***/ 7629:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar IS_PURE = __webpack_require__(6395);\nvar globalThis = __webpack_require__(4576);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.46.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)',\n license: 'https://github.com/zloirock/core-js/blob/v3.46.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n\n/***/ 7642:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar difference = __webpack_require__(3440);\nvar fails = __webpack_require__(9039);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike('difference', function (result) {\n return result.size === 0;\n});\n\nvar FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function () {\n // https://bugs.webkit.org/show_bug.cgi?id=288595\n var setLike = {\n size: 1,\n has: function () { return true; },\n keys: function () {\n var index = 0;\n return {\n next: function () {\n var done = index++ > 1;\n if (baseSet.has(1)) baseSet.clear();\n return { done: done, value: 2 };\n }\n };\n }\n };\n // eslint-disable-next-line es/no-set -- testing\n var baseSet = new Set([1, 2, 3, 4]);\n // eslint-disable-next-line es/no-set-prototype-difference -- testing\n return baseSet.difference(setLike).size !== 3;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n difference: difference\n});\n\n\n/***/ }),\n\n/***/ 7657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar create = __webpack_require__(2360);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltIn = __webpack_require__(6840);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7680:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n\n/***/ 7696:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toLength = __webpack_require__(8014);\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 7740:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar ownKeys = __webpack_require__(5031);\nvar getOwnPropertyDescriptorModule = __webpack_require__(7347);\nvar definePropertyModule = __webpack_require__(4913);\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n\n/***/ 7750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isNullOrUndefined = __webpack_require__(4117);\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7751:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 7811:\n/***/ ((module) => {\n\n\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n/***/ }),\n\n/***/ 7936:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n\n\n/***/ }),\n\n/***/ 8004:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar fails = __webpack_require__(9039);\nvar intersection = __webpack_require__(8750);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n\n\n/***/ }),\n\n/***/ 8014:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 8100:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n\n\n/***/ }),\n\n/***/ 8111:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar anInstance = __webpack_require__(679);\nvar anObject = __webpack_require__(8551);\nvar isCallable = __webpack_require__(4901);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar hasOwn = __webpack_require__(9297);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n\n\n/***/ }),\n\n/***/ 8227:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar shared = __webpack_require__(5745);\nvar hasOwn = __webpack_require__(9297);\nvar uid = __webpack_require__(3392);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 8235:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n\n\n/***/ }),\n\n/***/ 8237:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar apply = __webpack_require__(8745);\nvar fails = __webpack_require__(9039);\n\nvar $TypeError = TypeError;\n\n// https://bugs.webkit.org/show_bug.cgi?id=291651\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n // eslint-disable-next-line es/no-iterator-prototype-reduce, es/no-array-prototype-keys, array-callback-return -- required for testing\n [].keys().reduce(function () { /* empty */ }, undefined);\n});\n\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n\n// `Iterator.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.reduce\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n reduce: function reduce(reducer /* , initialValue */) {\n anObject(this);\n try {\n aCallable(reducer);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? undefined : arguments[1];\n if (reduceWithoutClosingOnEarlyError) {\n return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n }\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = reducer(accumulator, value, counter);\n }\n counter++;\n }, { IS_RECORD: true });\n if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n return accumulator;\n }\n});\n\n\n/***/ }),\n\n/***/ 8335:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar isArray = __webpack_require__(4376);\nvar hasOwn = __webpack_require__(9297);\nvar toString = __webpack_require__(655);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar parseJSONString = __webpack_require__(8235);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nvar JSON = globalThis.JSON;\nvar Number = globalThis.Number;\nvar SyntaxError = globalThis.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^[\\d-]$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n source = toString(source);\n var context = new Context(source, 0, '');\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === undefined) delete object[key];\n else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n this.source = source;\n this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n fork: function (nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function () {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case '{':\n return fork.object();\n case '[':\n return fork.array();\n case '\"':\n return fork.string();\n case 't':\n return fork.keyword(true);\n case 'f':\n return fork.keyword(false);\n case 'n':\n return fork.keyword(null);\n } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function (type, value, start, end, nodes) {\n return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', '}'], i);\n if (at(source, i) === '}' && !expectKeypair) {\n i++;\n break;\n }\n // Parsing the key\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([':'], i) + 1;\n // Parsing value\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([',', '}'], result.end);\n var chr = at(source, i);\n if (chr === ',') {\n expectKeypair = true;\n i++;\n } else if (chr === '}') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === ']' && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([',', ']'], result.end);\n if (at(source, i) === ',') {\n expectElement = true;\n i++;\n } else if (at(source, i) === ']') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function () {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function () {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === '-') i++;\n if (at(source, i) === '0') i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n else throw new SyntaxError('Failed to parse number at: ' + i);\n if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n if (at(source, i) === 'e' || at(source, i) === 'E') {\n i++;\n if (at(source, i) === '+' || at(source, i) === '-') i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function (value) {\n var keyword = '' + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function (regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function (array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n var unsafeInt = '9007199254740993';\n var source;\n nativeParse(unsafeInt, function (key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n // Safari 9 bug\n return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n});\n\n\n/***/ }),\n\n/***/ 8469:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar iterateSimple = __webpack_require__(507);\nvar SetHelpers = __webpack_require__(4402);\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n\n\n/***/ }),\n\n/***/ 8480:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 8527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 8551:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n\n/***/ 8574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n\n/***/ 8622:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n/***/ }),\n\n/***/ 8646:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorMethod = __webpack_require__(851);\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n\n\n/***/ }),\n\n/***/ 8686:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n\n\n/***/ }),\n\n/***/ 8721:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar uncurryThis = __webpack_require__(9504);\nvar defineBuiltInAccessor = __webpack_require__(2106);\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n/***/ }),\n\n/***/ 8727:\n/***/ ((module) => {\n\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 8745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n\n/***/ 8750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n\n\n/***/ }),\n\n/***/ 8773:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 8981:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar requireObjectCoercible = __webpack_require__(7750);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 9039:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 9143:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar aString = __webpack_require__(3463);\nvar hasOwn = __webpack_require__(9297);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\nvar notDetached = __webpack_require__(5169);\n\nvar base64Alphabet = base64Map.c2i;\nvar base64UrlAlphabet = base64Map.c2iUrl;\n\nvar SyntaxError = globalThis.SyntaxError;\nvar TypeError = globalThis.TypeError;\nvar at = uncurryThis(''.charAt);\n\nvar skipAsciiWhitespace = function (string, index) {\n var length = string.length;\n for (;index < length; index++) {\n var chr = at(string, index);\n if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n } return index;\n};\n\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n var chunkLength = chunk.length;\n\n if (chunkLength < 4) {\n chunk += chunkLength === 2 ? 'AA' : 'A';\n }\n\n var triplet = (alphabet[at(chunk, 0)] << 18)\n + (alphabet[at(chunk, 1)] << 12)\n + (alphabet[at(chunk, 2)] << 6)\n + alphabet[at(chunk, 3)];\n\n var chunkBytes = [\n (triplet >> 16) & 255,\n (triplet >> 8) & 255,\n triplet & 255\n ];\n\n if (chunkLength === 2) {\n if (throwOnExtraBits && chunkBytes[1] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0]];\n }\n\n if (chunkLength === 3) {\n if (throwOnExtraBits && chunkBytes[2] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0], chunkBytes[1]];\n }\n\n return chunkBytes;\n};\n\nvar writeBytes = function (bytes, elements, written) {\n var elementsLength = elements.length;\n for (var index = 0; index < elementsLength; index++) {\n bytes[written + index] = elements[index];\n }\n return written + elementsLength;\n};\n\n/* eslint-disable max-statements, max-depth -- TODO */\nmodule.exports = function (string, options, into, maxLength) {\n aString(string);\n anObjectOrUndefined(options);\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n\n if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n\n if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n throw new TypeError('Incorrect `lastChunkHandling` option');\n }\n\n if (into) notDetached(into.buffer);\n\n var stringLength = string.length;\n var bytes = into || [];\n var written = 0;\n var read = 0;\n var chunk = '';\n var index = 0;\n\n if (maxLength) while (true) {\n index = skipAsciiWhitespace(string, index);\n if (index === stringLength) {\n if (chunk.length > 0) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n if (lastChunkHandling === 'loose') {\n if (chunk.length === 1) {\n throw new SyntaxError('Malformed padding: exactly one additional character');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n } else {\n throw new SyntaxError('Missing padding');\n }\n }\n read = stringLength;\n break;\n }\n var chr = at(string, index);\n ++index;\n if (chr === '=') {\n if (chunk.length < 2) {\n throw new SyntaxError('Padding is too early');\n }\n index = skipAsciiWhitespace(string, index);\n if (chunk.length === 2) {\n if (index === stringLength) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n throw new SyntaxError('Malformed padding: only one =');\n }\n if (at(string, index) === '=') {\n ++index;\n index = skipAsciiWhitespace(string, index);\n }\n }\n if (index < stringLength) {\n throw new SyntaxError('Unexpected character after padding');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n read = stringLength;\n break;\n }\n if (!hasOwn(alphabet, chr)) {\n throw new SyntaxError('Unexpected character');\n }\n var remainingBytes = maxLength - written;\n if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n // special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n break;\n }\n\n chunk += chr;\n if (chunk.length === 4) {\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n chunk = '';\n read = index;\n if (written === maxLength) {\n break;\n }\n }\n }\n\n return { bytes: bytes, read: read, written: written };\n};\n\n\n/***/ }),\n\n/***/ 9286:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar SetHelpers = __webpack_require__(4402);\nvar iterate = __webpack_require__(8469);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9297:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar toObject = __webpack_require__(8981);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n\n/***/ 9306:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar tryToString = __webpack_require__(6823);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n\n/***/ 9314:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar notANaN = __webpack_require__(4149);\nvar toPositiveInteger = __webpack_require__(9590);\nvar iteratorClose = __webpack_require__(9539);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);\nvar dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);\n\nvar FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var next = this.next;\n var result, done;\n while (this.remaining) {\n this.remaining--;\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n }\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.drop\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n drop: function drop(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\n\n return new IteratorProxy(getIteratorDirect(this), {\n remaining: remaining\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 9429:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar IS_NODE = __webpack_require__(6193);\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n\n\n/***/ }),\n\n/***/ 9432:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(5213);\n\n\n/***/ }),\n\n/***/ 9433:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 9462:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar create = __webpack_require__(2360);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIns = __webpack_require__(6279);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar InternalStateModule = __webpack_require__(1181);\nvar getMethod = __webpack_require__(5966);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar createIterResultObject = __webpack_require__(2529);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorCloseAll = __webpack_require__(1385);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar NORMAL = 'normal';\nvar THROW = 'throw';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(undefined, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (state.openIters) try {\n iteratorCloseAll(state.openIters, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (iterator) iteratorClose(iterator, NORMAL);\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n\n\n/***/ }),\n\n/***/ 9486:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\n\nvar base64Alphabet = base64Map.i2c;\nvar base64UrlAlphabet = base64Map.i2cUrl;\n\nvar charAt = uncurryThis(''.charAt);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.toBase64 || !function () {\n try {\n var target = new Uint8Array();\n target.toBase64(null);\n } catch (error) {\n return true;\n }\n}();\n\n// `Uint8Array.prototype.toBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n toBase64: function toBase64(/* options */) {\n var array = anUint8Array(this);\n var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var omitPadding = !!options && !!options.omitPadding;\n notDetached(this.buffer);\n\n var result = '';\n var i = 0;\n var length = array.length;\n var triplet;\n\n var at = function (shift) {\n return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n };\n\n for (; i + 2 < length; i += 3) {\n triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n result += at(3) + at(2) + at(1) + at(0);\n }\n if (i + 2 === length) {\n triplet = (array[i] << 16) + (array[i + 1] << 8);\n result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n } else if (i + 1 === length) {\n triplet = array[i] << 16;\n result += at(3) + at(2) + (omitPadding ? '' : '==');\n }\n\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 9504:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 9519:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n\n/***/ 9539:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getMethod = __webpack_require__(5966);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n\n/***/ 9565:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n\n/***/ 9577:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar arrayWith = __webpack_require__(9928);\nvar ArrayBufferViewCore = __webpack_require__(4644);\nvar isBigIntArray = __webpack_require__(1108);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toBigInt = __webpack_require__(5854);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// Bug in WebKit. It should truncate a negative fractional index to zero, but instead throws an error\nvar THROW_ON_NEGATIVE_FRACTIONAL_INDEX = PROPER_ORDER && function () {\n try {\n // eslint-disable-next-line es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](-0.5, 1);\n } catch (error) {\n return true;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER || THROW_ON_NEGATIVE_FRACTIONAL_INDEX);\n\n\n/***/ }),\n\n/***/ 9590:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9617:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIndexedObject = __webpack_require__(5397);\nvar toAbsoluteIndex = __webpack_require__(5610);\nvar lengthOfArrayLike = __webpack_require__(6198);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 9631:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(9486);\n\n\n/***/ }),\n\n/***/ 9797:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(4226);\n\n\n/***/ }),\n\n/***/ 9835:\n/***/ ((module) => {\n\n\n// Should get iterator record of a set-like object before cloning this\n// https://bugs.webkit.org/show_bug.cgi?id=289430\nmodule.exports = function (METHOD_NAME) {\n try {\n // eslint-disable-next-line es/no-set -- needed for test\n var baseSet = new Set();\n var setLike = {\n size: 0,\n has: function () { return true; },\n keys: function () {\n // eslint-disable-next-line es/no-object-defineproperty -- needed for test\n return Object.defineProperty({}, 'next', {\n get: function () {\n baseSet.clear();\n baseSet.add(4);\n return function () {\n return { done: true };\n };\n }\n });\n }\n };\n var result = baseSet[METHOD_NAME](setLike);\n\n return result.size === 1 && result.values().next().value === 4;\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ }),\n\n/***/ 9928:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/ecma262/#sec-array.prototype.with\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js\nvar es_array_push = __webpack_require__(4114);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js\nvar es_array_buffer_detached = __webpack_require__(6573);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js\nvar es_array_buffer_transfer = __webpack_require__(8100);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js\nvar es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js\nvar es_iterator_constructor = __webpack_require__(8111);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js\nvar es_iterator_reduce = __webpack_require__(8237);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.try.js\nvar es_promise_try = __webpack_require__(1689);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.with.js\nvar es_typed_array_with = __webpack_require__(9577);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.math.sum-precise.js\nvar esnext_math_sum_precise = __webpack_require__(4235);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.from-base64.js\nvar esnext_uint8_array_from_base64 = __webpack_require__(9432);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js\nvar esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js\nvar esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-base64.js\nvar esnext_uint8_array_to_base64 = __webpack_require__(9631);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-hex.js\nvar esnext_uint8_array_to_hex = __webpack_require__(5623);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-exception.stack.js\nvar web_dom_exception_stack = __webpack_require__(4979);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.parse.js\nvar web_url_parse = __webpack_require__(5781);\n;// ./src/shared/util.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\nif (typeof AbortSignal.any !== \"function\") {\n AbortSignal.any = function (iterable) {\n const ac = new AbortController();\n const {\n signal\n } = ac;\n for (const s of iterable) {\n if (s.aborted) {\n ac.abort(s.reason);\n return signal;\n }\n }\n for (const s of iterable) {\n s.addEventListener(\"abort\", () => {\n ac.abort(s.reason);\n }, {\n signal\n });\n }\n return signal;\n };\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js\nvar es_iterator_map = __webpack_require__(1701);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.delete.js\nvar web_url_search_params_delete = __webpack_require__(4603);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.has.js\nvar web_url_search_params_has = __webpack_require__(7566);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.size.js\nvar web_url_search_params_size = __webpack_require__(8721);\n;// ./src/display/xfa_text.js\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/display_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.take.js\nvar es_iterator_take = __webpack_require__(4972);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.with-resolvers.js\nvar es_promise_with_resolvers = __webpack_require__(4628);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js\nvar es_set_difference_v2 = __webpack_require__(7642);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js\nvar es_set_intersection_v2 = __webpack_require__(8004);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js\nvar es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-subset-of.v2.js\nvar es_set_is_subset_of_v2 = __webpack_require__(5876);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-superset-of.v2.js\nvar es_set_is_superset_of_v2 = __webpack_require__(2475);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.symmetric-difference.v2.js\nvar es_set_symmetric_difference_v2 = __webpack_require__(5024);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js\nvar es_set_union_v2 = __webpack_require__(1698);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.drop.js\nvar es_iterator_drop = __webpack_require__(9314);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.every.js\nvar es_iterator_every = __webpack_require__(1148);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js\nvar es_iterator_some = __webpack_require__(3579);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.json.parse.js\nvar esnext_json_parse = __webpack_require__(8335);\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\n\n\n\n\n\n\n\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\n\n\n\n\n\n\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj-bin-transform.js\n\n\n\n\n\n\n\n\n\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass PatternInfo {\n static #KIND = 0;\n static #HAS_BBOX = 1;\n static #HAS_BACKGROUND = 2;\n static #SHADING_TYPE = 3;\n static #N_COORD = 4;\n static #N_COLOR = 8;\n static #N_STOP = 12;\n static #N_FIGURES = 16;\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n static write(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n figures = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n figures = ir[4] || [];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 3);\n const nStop = colorStops.length;\n const nFigures = figures.length;\n let figuresSize = 0;\n for (const figure of figures) {\n figuresSize += 1;\n figuresSize = Math.ceil(figuresSize / 4) * 4;\n figuresSize += 4 + figure.coords.length * 4;\n figuresSize += 4 + figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n figuresSize += 4;\n }\n }\n const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize;\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PatternInfo.#KIND, kind);\n dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType);\n dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 3;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n offset += 3;\n }\n for (let i = 0; i < figures.length; i++) {\n const figure = figures[i];\n dataView.setUint8(offset, figure.type);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n dataView.setUint32(offset, figure.coords.length, true);\n offset += 4;\n const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length);\n figureCoordsView.set(figure.coords);\n offset += figure.coords.length * 4;\n dataView.setUint32(offset, figure.colors.length, true);\n offset += 4;\n const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n colorsView.set(figure.colors);\n offset += figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n dataView.setUint32(offset, figure.verticesPerRow, true);\n offset += 4;\n }\n }\n return buffer;\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PatternInfo.#KIND];\n const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n offset += nColor * 3;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n const figures = [];\n for (let i = 0; i < nFigures; ++i) {\n const type = dataView.getUint8(offset);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n const coordsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n offset += coordsLength * 4;\n const colorsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n offset += colorsLength * 4;\n const figure = {\n type,\n coords: figureCoords,\n colors: figureColors\n };\n if (type === MeshFigureType.LATTICE) {\n figure.verticesPerRow = dataView.getUint32(offset, true);\n offset += 4;\n }\n figures.push(figure);\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n let minX = coords[0],\n maxX = coords[0];\n let minY = coords[1],\n maxY = coords[1];\n for (let i = 0; i < coords.length; i += 2) {\n const x = coords[i],\n y = coords[i + 1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n bounds = [minX, minY, maxX, maxY];\n }\n return [\"Mesh\", shadingType, coords, colors, figures, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\n\n;// ./src/display/api_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\n\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\n\n\n\n\n\n\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js\nvar es_iterator_filter = __webpack_require__(2489);\n;// ./src/display/filter_factory.js\n\n\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\n\n\n\n\n\n\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\n\n\n\n\n\n\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif (isNodeJS) {\n let canvas;\n try {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n try {\n canvas = require(\"@napi-rs/canvas\");\n } catch (ex) {\n warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n }\n } catch (ex) {\n warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n }\n if (!globalThis.DOMMatrix) {\n if (canvas?.DOMMatrix) {\n globalThis.DOMMatrix = canvas.DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n }\n if (!globalThis.ImageData) {\n if (canvas?.ImageData) {\n globalThis.ImageData = canvas.ImageData;\n } else {\n warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n }\n }\n if (!globalThis.Path2D) {\n if (canvas?.Path2D) {\n globalThis.Path2D = canvas.Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n }\n if (!globalThis.navigator?.language) {\n globalThis.navigator = {\n language: \"en-US\",\n platform: \"\",\n userAgent: \"\"\n };\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js\nvar es_iterator_for_each = __webpack_require__(7588);\n;// ./src/display/canvas_dependency_tracker.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\n\n;// ./src/display/pattern_helper.js\n\n\n\n\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case MeshFigureType.LATTICE:\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case MeshFigureType.TRIANGLES:\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\n\n\n\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\n\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.394\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, enableHWA) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.4.394\";\nconst build = \"2cc809ade\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n color\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = color || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js\nvar es_iterator_find = __webpack_require__(116);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js\nvar es_iterator_flat_map = __webpack_require__(531);\n;// ./src/shared/scripting_utils.js\n\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (data.overlaidText) {\n link.title = data.overlaidText;\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n if (this.#commentManager) {\n return false;\n }\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n id\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n for (const element of this.#elements) {\n this.#accessibilityManager.addPointerInTextLayer(element.contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\n\n\n\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\n\n\n\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #firstPoint = null;\n #lastPoint = null;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n get commentButtonPosition() {\n return this.#firstPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims();\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims();\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\n\n\n\n\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._currentParent.endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (!CurrentPointers.isSamePointerId(pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n CurrentPointers.clearPointerType();\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\n\n\n\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map"],"names":["__webpack_modules__","module","__unused_webpack_exports","isCallable","exports","it","call","aCallable","anObject","tryToString","getIteratorMethod","$TypeError","TypeError","argument","usingIterator","iteratorMethod","arguments","length","__unused_webpack_module","$","iterate","getIteratorDirect","iteratorClose","findWithoutClosingOnEarlyError","iteratorHelperWithoutClosingOnEarlyError","target","proto","real","forced","find","predicate","this","error","record","counter","value","stop","IS_RECORD","INTERRUPTED","result","uncurryThis","fails","hasOwn","DESCRIPTORS","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","get","$String","String","defineProperty","Object","stringSlice","slice","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","split","makeBuiltIn","name","options","getter","setter","configurable","arity","constructor","writable","prototype","undefined","state","source","Function","toString","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","EXISTS","PROPER","CONFIGURABLE","getBuiltIn","globalThis","anUint8Array","notDetached","numberToString","Uint8Array","INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS","toHex","buffer","i","hex","fn","ITERATOR_INSTEAD_OF_RECORD","step","iterator","next","done","getIteratorFlattenable","createIteratorProxy","IS_PURE","iteratorHelperThrowsOnInvalidIterator","FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","flatMapWithoutClosingOnEarlyError","FORCED","IteratorProxy","inner","mapper","flatMap","test","bind","hasOwnProperty","classof","isPrototypeOf","Prototype","methodName","method","Iterator","ceil","Math","floor","trunc","x","n","USE_SYMBOL_AS_UID","$Object","$Symbol","getMethod","isNullOrUndefined","Iterators","ITERATOR","wellKnownSymbol","alphabet","internalObjectKeys","enumBugKeys","keys","O","exec","klass","everyWithoutClosingOnEarlyError","every","stopped","set","has","NATIVE_WEAK_MAP","isObject","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","store","metadata","facade","STATE","getterFor","TYPE","type","number","iters","kind","V8","ENVIRONMENT","structuredClone","ArrayBuffer","clone","transfer","byteLength","apply","newPromiseCapabilityModule","perform","Promise","ACCEPT_ARGUMENTS","stat","callbackfn","args","promiseCapability","f","reject","resolve","promise","union","setMethodGetKeysBeforeCloning","setMethodAcceptSetLike","callWithSafeIterationClosing","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","map","obj","toIndexedObject","indexOf","push","object","names","key","descriptor","F","getPrototypeOf","SyntaxError","parseInt","min","NOT_HEX","string","into","stringLength","maxLength","bytes","read","written","hexits","activeXDocument","definePropertiesModule","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","document","domain","style","display","appendChild","src","contentWindow","open","create","Properties","isSupersetOf","FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR","filterWithoutClosingOnEarlyError","filter","$default","isArrayIteratorMethod","lengthOfArrayLike","getIterator","Result","ResultPrototype","iterable","unboundFunction","iterFn","index","that","AS_ENTRIES","IS_ITERATOR","condition","callFn","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","toLowerCase","commonAlphabet","base64Alphabet","base64UrlAlphabet","inverse","characters","charAt","i2c","c2i","i2cUrl","c2iUrl","passed","required","navigator","userAgent","uncurryThisAccessor","requireObjectCoercible","aPossiblePrototype","setPrototypeOf","CORRECT_SETTER","Array","__proto__","$RangeError","RangeError","$Infinity","Infinity","abs","pow","POW_2_1023","MAX_SAFE_INTEGER","MAX_DOUBLE","Number","MAX_VALUE","MAX_ULP","NOT_A_NUMBER","MINUS_INFINITY","PLUS_INFINITY","MINUS_ZERO","FINITE","twosum","y","hi","lo","sumPrecise","items","numbers","count","NaN","sum","tmp","partials","overflow","actuallyUsedPartials","j","sign","$this","dummy","Wrapper","NewTarget","NewTargetPrototype","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","DataView","id","postfix","random","aSet","SetHelpers","size","getSetRecord","iterateSet","iterateSimple","remove","other","otherRec","e","includes","isPossiblePrototype","someWithoutClosingOnEarlyError","some","add","keysIter","functionToString","getOwnPropertySymbols","toIntegerOrInfinity","INVALID_SIZE","max","SetRecord","intSize","numSize","isDisjointFrom","createElement","setArrayLength","doesNotExceedSafeInteger","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","userAgentStartsWith","Bun","version","Deno","process","window","aString","$fromHex","setFromHex","val","valueOf","isArray","SetPrototype","Set","WorkerThreads","channel","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","postMessage","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","IteratorPrototype","CLOSED","check","self","global","defineBuiltIn","validateArgumentsLength","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","append","$delete","forEach","params","$value","entries","v","k","entry","dindex","found","entriesLength","enumerable","unsafe","withResolvers","NAME","Constructor","defineBuiltInAccessor","uid","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","isTypedArray","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","createSetLike","createSetLikeWithInfinitySize","Error","callback","notANaN","toPositiveInteger","takeWithoutClosingOnEarlyError","remaining","take","limit","anInstance","inheritIfRequired","normalizeStringArgument","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","message","stack","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","s","c","IndexSizeError","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","symmetricDifference","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","isDetached","arrayFromConstructorAndList","$fromBase64","fromBase64","list","$length","IndexedObject","integer","toIndex","detachTransferable","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","a","b","copyLength","USE_NATIVE_URL","URL","parse","url","urlString","base","toPrimitive","prim","BigInt","isSubsetOf","V","func","PromiseCapability","$$resolve","$$reject","NATIVE_BIND","toLength","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","dontCallGetSet","setFromBase64","objectKeys","defineProperties","props","simple","nonConfigurable","nonWritable","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","bitmap","NATIVE_SYMBOL","propertyIsEnumerable","propertyIsEnumerableModule","searchParams","params2","pathname","toJSON","sort","href","username","host","hash","getAll","$has","values","forEachWithoutClosingOnEarlyError","SHARED","versions","mode","copyright","license","difference","setLike","baseSet","clear","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","ownKeys","getOwnPropertyDescriptorModule","exceptions","namespace","$transfer","transferToFixedLength","intersection","from","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$SyntaxError","$parseInt","fromCharCode","at","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","end","FAILS_ON_INITIAL_UNDEFINED","reduce","reduceWithoutClosingOnEarlyError","reducer","noInitial","accumulator","parseJSONString","JSON","nativeParse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","internalize","holder","reviver","node","elementRecordsLen","unmodified","context","nodeIsArray","nodes","internalizeProperty","Node","Context","fork","nextIndex","skip","array","keyword","start","expectKeypair","until","expectElement","parsed","startIndex","endIndex","regex","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","text","root","$parse","interruptible","getOwnPropertyNames","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","stringHandling","Reflect","$propertyIsEnumerable","NASHORN_BUG","anObjectOrUndefined","base64Map","getAlphabetOption","skipAsciiWhitespace","decodeBase64Chunk","chunk","throwOnExtraBits","chunkLength","triplet","chunkBytes","writeBytes","elements","elementsLength","lastChunkHandling","remainingBytes","DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR","dropWithoutClosingOnEarlyError","drop","IS_NODE","getBuiltinModule","defineBuiltIns","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","toBase64","omitPadding","shift","uncurryThisWithBind","match","v8","innerResult","innerError","arrayWith","ArrayBufferViewCore","isBigIntArray","toBigInt","PROPER_ORDER","THROW_ON_NEGATIVE_FRACTIONAL_INDEX","relativeIndex","actualValue","toAbsoluteIndex","createMethod","IS_INCLUDES","el","fromIndex","actualIndex","A","__webpack_module_cache__","moduleId","cachedModule","d","definition","o","prop","__webpack_exports__","isNodeJS","nw","electron","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","POPUP","SIGNATURE","COMMENT","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","MeshFigureType","TextRenderingMode","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","info","msg","console","warn","unreachable","assert","cond","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","protocol","_isValidProtocol","updateUrlHash","allowRel","res","shadow","nonSerializable","BaseException","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","subarray","stringToBytes","str","charCodeAt","util_FeatureTest","isLittleEndian","buffer8","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","isFloat16ArraySupported","Float16Array","isSanitizerSupported","Sanitizer","platform","isAndroid","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","CSS","supports","hexNumbers","padStart","Util","makeHexColor","r","g","domMatrixToTransform","dm","scaleMinMax","minMax","m1","m2","multiplyByDOMMatrix","md","applyTransform","p","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","rectBoundingBox","x0","y0","x1","y1","x2","x3","y2","y3","t","mt","tt","ttt","delta","sqrtDelta","bezierBoundingBox","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","p2","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","MathClamp","toBase64Util","arr","btoa","AbortSignal","any","ac","AbortController","signal","aborted","abort","reason","addEventListener","XfaText","textContent","xfa","styles","walk","shouldBuildText","attributes","children","child","XfaLayer","setupStorage","element","storage","intent","storedData","getValue","event","setValue","xfaOn","setAttribute","xfaOff","removeAttribute","checked","getAttribute","option","selected","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","assign","addLinkAttributes","newWindow","dataId","render","parameters","annotationStorage","xfaHtml","rootHtml","isNotForRichText","rootDiv","div","viewport","textDivs","createTextNode","parent","pop","childHtml","xmlns","createElementNS","querySelectorAll","update","hidden","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","blob","json","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","rawDims","dims","pageWidth","pageHeight","pageX","pageY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","isPdfFile","filename","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","newURL","getURL","decode","decoded","pdfRegex","reverse","hashFilename","StatTimer","started","times","time","Date","now","timeEnd","outBuf","longest","padEnd","noContextMenu","preventDefault","stopEvent","stopPropagation","PDFDateString","toDateObject","RegExp","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","screen","availWidth","availHeight","SupportedImageMimeTypes","ColorScheme","isDarkMode","matchMedia","CSSConstants","commentForegroundColor","classList","body","getComputedStyle","applyOpacity","opacity","white","round","RGBToHSL","rgb","l","HSLToRGB","hsl","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","dir","className","container","fragment","createDocumentFragment","lines","line","firstChild","makePathFromDrawOPS","path","Path2D","bezierCurveTo","quadraticCurveTo","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","signature","editToolbar","_uiManager","_signal","buttons","position","toolbarPosition","direction","insetInlineEnd","top","_focusEventsAllowed","capture","hide","hideDropdown","show","shown","addDeleteButton","editorType","button","tabIndex","delete","divider","addAltText","altText","addComment","comment","beforeElement","renderForToolbar","insertBefore","toolbar","addColorPicker","colorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","removeButton","removeToolbarCommentButton","addButton","tool","addButtonBefore","beforeSelector","querySelector","updateEditSignatureButton","description","title","destroy","FloatingToolbar","uiManager","hasCommentManager","commentSelection","highlightSelection","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","span","bindEvents","CurrentPointers","initializeAndAddPointerId","pointerId","setPointer","pointerType","setTimeStamp","timeStamp","isSamePointerId","isSamePointerIdOrRemove","isSamePointerType","isInitializedAndDifferentPointerType","isSameTimeStamp","isUsingMultiplePointers","clearPointerType","clearPointerIds","clearTimeStamp","IdManager","ImageManager","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","then","drawImage","getImageData","rawData","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","isMacKey","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","colors","visibility","colorScheme","computedColor","getColorValues","convert","RGB","_colorsMapping","getHexCode","AnnotationEditorUIManager","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","setSidebarUiManager","layer","clearTimeout","combinedSignal","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","_highlightColors","pair","toUpperCase","hasHCM","isNameForHCM","endsWith","highlightColorNames","getNonHCMColor","colorName","getNonHCMColorName","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","editComment","posX","posY","showDialog","selectComment","pageIndex","getEditorByUID","toggleComment","updateComment","getData","updatePopupColor","removeComment","removeComments","isSelected","toggleCommentPopup","makeCommentColor","getCommentDialogElement","dialogElement","waitForEditorsRendered","pageNumber","onEditorsRendered","_off","on","getSignature","switchToMode","once","dispatch","setPreference","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","getAndRemoveDataFromAnnotationStorage","annotationId","storedValue","getRawValue","addToAnnotationStorage","a11yAlert","messageId","stringify","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","addEditListeners","setEditingState","removeEditListeners","dataTransfer","isHandlingMimeForPasting","dropEffect","editors","serialized","serialize","clipboardData","setData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","mustEnterInEditMode","hideSidebar","destroyPopup","hideStandaloneCommentButton","addStandaloneCommentButton","loadSignatures","getAnnotationsByType","editorClass","_editorType","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","showSidebar","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","firstSelectedEditor","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","isEditingMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","range","collapsed","getClientRects","renderAnnotationElement","editorId","hasBeenModified","setMissingCanvas","setCanvas","addMissingCanvas","AltText","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","parentNode","getElementForAltText","Comment","renderForStandalone","commentButtonPosition","commentButtonColor","backgroundColor","focusButton","onUpdatedColor","commentButtonWidth","boundingClientRect","commentPopupPositionInLayer","parentX","parentY","hasDefaultPopupPosition","removeStandaloneCommentButton","setCommentButtonStates","hasPopup","ariaExpanded","isStandalone","ariaHasPopup","ariaControls","ariaControlsElements","edit","parentDimensions","isDeleted","hasBeenEdited","richText","date","setInitialText","TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","touches","pointerDownAC","opts","cancelPointerDown","opt","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","_willKeepAspectRatio","isCentered","_structTreeParentId","creationDate","modificationDate","canAddComment","pageRotation","pageDimensions","pageTranslation","isAttachedToDOM","_type","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","isInEditMode","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","_onTranslating","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","getInitialTranslation","classes","prepend","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","newWidth","newHeight","_round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","deltaX","deltaY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","toolbarButtons","addEditToolbar","addCommentButton","addCommentButtonInToolbar","removeCommentButtonFromToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","createAltText","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","focusCommentButton","setCommentData","updateFromAnnotationLayer","hasEditedComment","hasDeletedComment","setSelectedCommentButton","setSelectedButton","DEFAULT_POPUP_WIDTH","DEFAULT_POPUP_HEIGHT","trY","blX","blY","trX","popup","contents","parentBoundingClientRect","defaultL10nId","maxWidth","maxHeight","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","clientX","clientY","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","getPDFRect","onceAdded","enableEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","annotationType","structTreeParentId","accessibilityData","isCopy","hideCommentPopup","timeout","makeResizable","commentButtonPositionInPage","commentPopupPosition","elementBeforePopup","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","lastChild","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","nodeName","contentDiv","telemetryInitialData","telemetryFinalData","_telemetryTimeout","updateFakeAnnotationElement","annotationLayer","updateEdited","addFakeAnnotation","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","defaultValue","resetModified","modified","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","isCommentDeleted","counters","comments","edited","computeTelemetryFinalData","resetModifiedIds","updateEditor","modifiedIds","ids","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","complete","otherRequest","_loadTestFont","atob","int32","offset","spliceString","insert","called","XXXX_VALUE","checksum","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","fontExtraProperties","black","bold","isInvalidPDFjsFont","isType3Font","italic","remeasure","vertical","ascent","defaultWidth","descent","bbox","fontMatrix","fallbackName","clearData","defaultVMetrics","CssFontInfo","encoder","TextEncoder","encodedStrings","stringsLength","strings","encoded","encode","view","setUint32","TextDecoder","getUint32","SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","setUint8","guessFallback","getUint8","styleLength","weightLength","FontInfo","bools","byteOffset","bitOffset","getFloat64","getInt16","stringData","cssFontInfoLength","cssFontInfoData","systemFontInfoLength","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","setFloat64","coord","setInt16","metric","PatternInfo","ir","coords","colorStops","figures","shadingType","nCoord","nColor","nStop","nFigures","figuresSize","figure","verticesPerRow","dataView","u8data","setFloat32","getIR","hasBBox","hasBackground","stops","getFloat32","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","getFactoryUrlProp","isRefProxy","num","gen","isValidExplicitDest","validRef","validName","dest","page","zoom","argsLen","allowNull","arg","LoopbackPort","listener","rmAbort","onAbort","removeEventListener","terminate","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","try","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","contain","svg","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","feColorMatrix","feComponentTransfer","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","require","createRequire","DOMMatrix","ImageData","language","node_utils_fetchData","fs","readFile","NodeFilterFactory","NodeCanvasFactory","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","expandBBox","EMPTY_BBOX","BBoxReader","bboxes","ensureDebugMetadata","dependencies","isRenderingOperation","CanvasDependencyTracker","sameLineText","operationsCount","recordDebugMetadata","growOperationsCount","oldBBoxes","opIdx","previous","lastSave","recordOpenMarker","idx","getOpenMarker","recordCloseMarker","pushBaseTransform","popBaseTransform","recordSimpleData","recordIncrementalData","resetIncrementalData","recordNamedData","recordSimpleDataFromNamed","depName","fallbackIdx","recordFutureForcedDependency","inheritSimpleDataAsFutureForcedDependencies","inheritPendingDependenciesAsFutureForcedDependencies","dep","resetBBox","recordClipBox","clipBox","recordBBox","recordCharacterBBox","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","recordFullPageBBox","measure","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getSimpleIndex","dependencyName","recordDependencies","dependencyNames","pendingDependencies","incremental","recordNamedDependency","recordOperation","preserve","depIdx","saveIdx","recordShowTextOperation","deps","bboxToClipBoxDropOperation","_takePendingDependencies","_extractOperation","operation","_pushPendingDependencies","takeDebugMetadata","CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","Dependencies","PathType","applyBoundingBox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","pathType","pattern","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","setTransform","drawTriangle","p3","c1","c2","c3","rowSize","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","ps","cs","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","preInit","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","op","outerExtraSize","_pathStartIdx","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","invTransf","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","typeface","browserFontSize","rise","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","scaledPath","invPatternTransform","measureText","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","getSinglePixelWidth","chars","glyph","unicode","joinedChars","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","renderingOpIdx","_getPattern","getShadingPattern","inv","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","GlobalWorkerOptions","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","fatal","quotindex","extvalue","encodingend","charset","getFilenameFromContentDispositionHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","NetworkManager","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","TextLayer","FontInspector","textContentSource","finally","fontFamilyMap","pump","lang","onBefore","abortEx","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","lineHeight","cachedAscent","metrics","fontBoundingBoxAscent","fontBoundingBoxDescent","ratio","getDocument","task","PDFDocumentLoadingTask","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","port","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","pageIndexesToSkip","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","recordedBBoxes","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","recordForDebugger","Boolean","StepperManager","shouldRecordOperations","renderTasks","internalRenderTask","gfx","setOperatorBBoxes","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","_isSameOrigin","otherUrl","_createCDNWrapper","wrapper","createObjectURL","fromPort","log","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","import","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontData","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_canvasContext","_enableHWA","_dependencyTracker","_operationsFilter","init","getNextBreakPoint","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","build","ColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","ariaHidden","renderMainDropdown","dropdown","ariaOrientation","ariaLabelledBy","role","ariaMultiSelectable","ariaSelected","updateColor","nextSibling","previousSibling","detail","BasicColorPicker","colorType","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","GetElementsByNameSet","TIMEZONE_OFFSET","getTimezoneOffset","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableComment","enableScripting","_fieldObjects","fieldObjects","hasOwnCommentButton","contentElement","_createContainer","_createQuadrilaterals","_hasPopupData","_isEditable","isEditable","hasPopupData","commentText","commentData","hasCommentButton","hasPopupElement","quadPoints","inkLists","inkList","_normalizePoint","removePopup","newPopup","_createPopup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","colorArray","noView","noPrint","userName","readonly","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","popupData","titleObj","parentRect","extraPopupElement","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","EditorAnnotationElement","createOrUpdatePopup","removeAnnotation","isTooltipOnly","link","isBound","_bindNamedAction","overlaidText","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","datetimeFormat","datetimeType","timeStep","hasDateOrTime","defaultFieldValue","blurListener","scrollLeft","getHours","getMinutes","getSeconds","toISOString","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","keyDown","_commentManager","PopupElement","trigger","renderCommentButton","after","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","outlineColor","header","dateObj","dateTime","popupLines","popupContent","lineAttributes","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","points","polyline","thickness","mark","underline","strikeout","AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","annotations","popupToElements","popupAnnotations","elementParams","noHTML","isPopupAnnotation","rendered","replaceChildren","getAriaAttributes","ariaAttributes","mid1","mid2","addPointerInTextLayer","addLinkAnnotations","_defaultBorderStyle","replaceWith","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","removePointerInTextLayer","updateFakeAnnotations","rawWidth","EOL_PATTERN","FreeTextEditor","_colorPicker","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","padding","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","firstPoint","lastPoint","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","newOutliner","getNewOutline","outliner","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","_addOutlines","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","getPathResizingSVGProperties","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","i0","j0","kk","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","shiftI","shiftJ","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","log2","isteps","grayImage","extractContoursFromText","fontStyle","SCALE","uint8Buf","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","DecompressionStream","numberOfDrawings","diffsOffset","POINTS_PROPERTIES_NUMBER","SignatureOptions","DrawnSignatureOptions","SignatureEditor","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","getSignaturePreview","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapUrl","bitmapFile","pasteEditor","getAsFile","hasAltTextStats","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","accept","files","click","bitmapId","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","toUrl","toDataURL","missingCanvas","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","elementsFromPoint","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","attach","moveElementInDOM","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","ImageKind"],"sourceRoot":""}
|