{"version":3,"file":"pdf.mjs","mappings":"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,IAAIjmH,UAAJ,CAAe,EAAf,CAAZ;EACA,IACE,OAAO+lH,MAAP,KAAkB,WAAlB,IACA,OAAOA,MAAA,EAAQG,eAAf,KAAmC,UAFrC,EAGE;IACAH,MAAA,CAAOG,eAAP,CAAuBD,GAAvB;EADA,CAHF,MAKO;IACL,KAAK,IAAIloH,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,EAApB,EAAwBA,CAAA,EAAxB,EAA6B;MAC3BkoH,GAAA,CAAIloH,CAAJ,IAASnB,IAAA,CAAKuX,KAAL,CAAWvX,IAAA,CAAK0f,MAAL,KAAgB,GAA3B,CAAT;IAD2B;EADxB;EAKP,OAAO0pF,aAAA,CAAcigB,GAAd,CAAP;AAlBiB;AAqBnB,MAAMv9F,gBAAA,GAAmB,oBAAzB;;;;;;;SC/iCA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAI;UACJ;UACA;UACA,IAAI;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,CAAC;UACD;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,EAAE;UACF;UACA,sGAAsG;UACtG;UACA;UACA;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA,EAAE;UACF;UACA;;;;;UChEA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;SEAA;SACA;SACA;SACA","sources":["webpack://pdf.js/node_modules/core-js/internals/a-callable.js","webpack://pdf.js/node_modules/core-js/internals/a-possible-prototype.js","webpack://pdf.js/node_modules/core-js/internals/a-set.js","webpack://pdf.js/node_modules/core-js/internals/an-instance.js","webpack://pdf.js/node_modules/core-js/internals/an-object.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-byte-length.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-is-detached.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-transfer.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-view-core.js","webpack://pdf.js/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://pdf.js/node_modules/core-js/internals/array-includes.js","webpack://pdf.js/node_modules/core-js/internals/array-iteration-from-last.js","webpack://pdf.js/node_modules/core-js/internals/array-set-length.js","webpack://pdf.js/node_modules/core-js/internals/array-to-reversed.js","webpack://pdf.js/node_modules/core-js/internals/array-with.js","webpack://pdf.js/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdf.js/node_modules/core-js/internals/classof-raw.js","webpack://pdf.js/node_modules/core-js/internals/classof.js","webpack://pdf.js/node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdf.js/node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdf.js/node_modules/core-js/internals/create-iter-result-object.js","webpack://pdf.js/node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdf.js/node_modules/core-js/internals/create-property-descriptor.js","webpack://pdf.js/node_modules/core-js/internals/create-property.js","webpack://pdf.js/node_modules/core-js/internals/define-built-in-accessor.js","webpack://pdf.js/node_modules/core-js/internals/define-built-in.js","webpack://pdf.js/node_modules/core-js/internals/define-built-ins.js","webpack://pdf.js/node_modules/core-js/internals/define-global-property.js","webpack://pdf.js/node_modules/core-js/internals/descriptors.js","webpack://pdf.js/node_modules/core-js/internals/detach-transferable.js","webpack://pdf.js/node_modules/core-js/internals/document-create-element.js","webpack://pdf.js/node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://pdf.js/node_modules/core-js/internals/dom-exception-constants.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-browser.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-deno.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-node.js","webpack://pdf.js/node_modules/core-js/internals/engine-user-agent.js","webpack://pdf.js/node_modules/core-js/internals/engine-v8-version.js","webpack://pdf.js/node_modules/core-js/internals/enum-bug-keys.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-clear.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-install.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-installable.js","webpack://pdf.js/node_modules/core-js/internals/export.js","webpack://pdf.js/node_modules/core-js/internals/fails.js","webpack://pdf.js/node_modules/core-js/internals/function-apply.js","webpack://pdf.js/node_modules/core-js/internals/function-bind-context.js","webpack://pdf.js/node_modules/core-js/internals/function-bind-native.js","webpack://pdf.js/node_modules/core-js/internals/function-call.js","webpack://pdf.js/node_modules/core-js/internals/function-name.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this.js","webpack://pdf.js/node_modules/core-js/internals/get-built-in.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-direct.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-flattenable.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-method.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator.js","webpack://pdf.js/node_modules/core-js/internals/get-method.js","webpack://pdf.js/node_modules/core-js/internals/get-set-record.js","webpack://pdf.js/node_modules/core-js/internals/global.js","webpack://pdf.js/node_modules/core-js/internals/has-own-property.js","webpack://pdf.js/node_modules/core-js/internals/hidden-keys.js","webpack://pdf.js/node_modules/core-js/internals/html.js","webpack://pdf.js/node_modules/core-js/internals/ie8-dom-define.js","webpack://pdf.js/node_modules/core-js/internals/indexed-object.js","webpack://pdf.js/node_modules/core-js/internals/inherit-if-required.js","webpack://pdf.js/node_modules/core-js/internals/inspect-source.js","webpack://pdf.js/node_modules/core-js/internals/install-error-cause.js","webpack://pdf.js/node_modules/core-js/internals/internal-state.js","webpack://pdf.js/node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdf.js/node_modules/core-js/internals/is-array.js","webpack://pdf.js/node_modules/core-js/internals/is-big-int-array.js","webpack://pdf.js/node_modules/core-js/internals/is-callable.js","webpack://pdf.js/node_modules/core-js/internals/is-forced.js","webpack://pdf.js/node_modules/core-js/internals/is-null-or-undefined.js","webpack://pdf.js/node_modules/core-js/internals/is-object.js","webpack://pdf.js/node_modules/core-js/internals/is-possible-prototype.js","webpack://pdf.js/node_modules/core-js/internals/is-pure.js","webpack://pdf.js/node_modules/core-js/internals/is-symbol.js","webpack://pdf.js/node_modules/core-js/internals/iterate-simple.js","webpack://pdf.js/node_modules/core-js/internals/iterate.js","webpack://pdf.js/node_modules/core-js/internals/iterator-close.js","webpack://pdf.js/node_modules/core-js/internals/iterator-create-proxy.js","webpack://pdf.js/node_modules/core-js/internals/iterator-map.js","webpack://pdf.js/node_modules/core-js/internals/iterators-core.js","webpack://pdf.js/node_modules/core-js/internals/iterators.js","webpack://pdf.js/node_modules/core-js/internals/length-of-array-like.js","webpack://pdf.js/node_modules/core-js/internals/make-built-in.js","webpack://pdf.js/node_modules/core-js/internals/math-trunc.js","webpack://pdf.js/node_modules/core-js/internals/normalize-string-argument.js","webpack://pdf.js/node_modules/core-js/internals/object-create.js","webpack://pdf.js/node_modules/core-js/internals/object-define-properties.js","webpack://pdf.js/node_modules/core-js/internals/object-define-property.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdf.js/node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/object-keys-internal.js","webpack://pdf.js/node_modules/core-js/internals/object-keys.js","webpack://pdf.js/node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdf.js/node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdf.js/node_modules/core-js/internals/own-keys.js","webpack://pdf.js/node_modules/core-js/internals/parse-json-string.js","webpack://pdf.js/node_modules/core-js/internals/proxy-accessor.js","webpack://pdf.js/node_modules/core-js/internals/require-object-coercible.js","webpack://pdf.js/node_modules/core-js/internals/set-clone.js","webpack://pdf.js/node_modules/core-js/internals/set-difference.js","webpack://pdf.js/node_modules/core-js/internals/set-helpers.js","webpack://pdf.js/node_modules/core-js/internals/set-intersection.js","webpack://pdf.js/node_modules/core-js/internals/set-is-disjoint-from.js","webpack://pdf.js/node_modules/core-js/internals/set-is-subset-of.js","webpack://pdf.js/node_modules/core-js/internals/set-is-superset-of.js","webpack://pdf.js/node_modules/core-js/internals/set-iterate.js","webpack://pdf.js/node_modules/core-js/internals/set-method-accept-set-like.js","webpack://pdf.js/node_modules/core-js/internals/set-size.js","webpack://pdf.js/node_modules/core-js/internals/set-symmetric-difference.js","webpack://pdf.js/node_modules/core-js/internals/set-union.js","webpack://pdf.js/node_modules/core-js/internals/shared-key.js","webpack://pdf.js/node_modules/core-js/internals/shared-store.js","webpack://pdf.js/node_modules/core-js/internals/shared.js","webpack://pdf.js/node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://pdf.js/node_modules/core-js/internals/symbol-constructor-detection.js","webpack://pdf.js/node_modules/core-js/internals/to-absolute-index.js","webpack://pdf.js/node_modules/core-js/internals/to-big-int.js","webpack://pdf.js/node_modules/core-js/internals/to-index.js","webpack://pdf.js/node_modules/core-js/internals/to-indexed-object.js","webpack://pdf.js/node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdf.js/node_modules/core-js/internals/to-length.js","webpack://pdf.js/node_modules/core-js/internals/to-object.js","webpack://pdf.js/node_modules/core-js/internals/to-offset.js","webpack://pdf.js/node_modules/core-js/internals/to-positive-integer.js","webpack://pdf.js/node_modules/core-js/internals/to-primitive.js","webpack://pdf.js/node_modules/core-js/internals/to-property-key.js","webpack://pdf.js/node_modules/core-js/internals/to-string-tag-support.js","webpack://pdf.js/node_modules/core-js/internals/to-string.js","webpack://pdf.js/node_modules/core-js/internals/try-node-require.js","webpack://pdf.js/node_modules/core-js/internals/try-to-string.js","webpack://pdf.js/node_modules/core-js/internals/uid.js","webpack://pdf.js/node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdf.js/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdf.js/node_modules/core-js/internals/validate-arguments-length.js","webpack://pdf.js/node_modules/core-js/internals/weak-map-basic-detection.js","webpack://pdf.js/node_modules/core-js/internals/well-known-symbol.js","webpack://pdf.js/node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://pdf.js/node_modules/core-js/modules/es.array.push.js","webpack://pdf.js/node_modules/core-js/modules/es.error.cause.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.find-last.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.set.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.with.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.detached.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.transfer.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.constructor.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.every.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.filter.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.flat-map.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.map.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.some.js","webpack://pdf.js/node_modules/core-js/modules/esnext.json.parse.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.difference.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.intersection.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.union.v2.js","webpack://pdf.js/node_modules/core-js/modules/web.dom-exception.stack.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.delete.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.has.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.size.js","webpack://pdf.js/src/shared/scripting_utils.js","webpack://pdf.js/src/display/annotation_layer.js","webpack://pdf.js/src/display/annotation_storage.js","webpack://pdf.js/src/display/api.js","webpack://pdf.js/src/display/base_factory.js","webpack://pdf.js/src/display/pattern_helper.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/display/canvas.js","webpack://pdf.js/src/display/display_utils.js","webpack://pdf.js/src/display/draw_layer.js","webpack://pdf.js/src/display/editor/freetext.js","webpack://pdf.js/src/display/editor/highlight.js","webpack://pdf.js/src/display/editor/ink.js","webpack://pdf.js/src/display/editor/stamp.js","webpack://pdf.js/src/display/editor/annotation_editor_layer.js","webpack://pdf.js/src/display/editor/color_picker.js","webpack://pdf.js/src/display/editor/alt_text.js","webpack://pdf.js/src/display/editor/toolbar.js","webpack://pdf.js/src/display/editor/editor.js","webpack://pdf.js/src/display/editor/outliner.js","webpack://pdf.js/src/display/editor/tools.js","webpack://pdf.js/src/display/fetch_stream.js","webpack://pdf.js/src/display/font_loader.js","webpack://pdf.js/src/display/metadata.js","webpack://pdf.js/src/display/network.js","webpack://pdf.js/src/display/content_disposition.js","webpack://pdf.js/src/display/network_utils.js","webpack://pdf.js/src/display/node_stream.js","webpack://pdf.js/src/display/node_utils.js","webpack://pdf.js/src/display/optional_content_config.js","webpack://pdf.js/src/display/text_layer.js","webpack://pdf.js/src/display/transport_stream.js","webpack://pdf.js/src/display/worker_options.js","webpack://pdf.js/src/display/xfa_layer.js","webpack://pdf.js/src/display/xfa_text.js","webpack://pdf.js/src/pdf.js","webpack://pdf.js/src/shared/message_handler.js","webpack://pdf.js/src/shared/murmurhash3.js","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\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","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\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","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n  has(it);\n  return it;\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\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","'use strict';\nvar isObject = require('../internals/is-object');\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","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar $TypeError = TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n  if (classof(O) !== 'ArrayBuffer') throw new $TypeError('ArrayBuffer expected');\n  return O.byteLength;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar slice = uncurryThis(ArrayBuffer.prototype.slice);\n\nmodule.exports = function (O) {\n  if (arrayBufferByteLength(O) !== 0) return false;\n  try {\n    slice(O, 0, 0);\n    return false;\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar isDetached = require('../internals/array-buffer-is-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar ArrayBuffer = global.ArrayBuffer;\nvar DataView = global.DataView;\nvar TypeError = global.TypeError;\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  if (isDetached(arrayBuffer)) throw new TypeError('ArrayBuffer is detached');\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","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.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(global.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 = global[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 = global[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 = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[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 = global[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 (global[NAME]) setPrototypeOf(global[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 (global[NAME]) setPrototypeOf(global[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 (global[NAME]) {\n    createNonEnumerableProperty(global[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","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\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    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","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var index = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\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","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#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","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\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","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\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","'use strict';\nvar fails = require('../internals/fails');\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","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\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","'use strict';\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","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\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","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\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","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar global = require('../internals/global');\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(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\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","'use strict';\nvar global = require('../internals/global');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar $ArrayBuffer = global.ArrayBuffer;\nvar $MessageChannel = global.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 = tryNodeRequire('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","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.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","'use strict';\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","'use strict';\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","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.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","'use strict';\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\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 -- 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","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\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 = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[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","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line 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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\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","'use strict';\nvar fails = require('../internals/fails');\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","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\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","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\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","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\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","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\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","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\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","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\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","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\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","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\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","'use strict';\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\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","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\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","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\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","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.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","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\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","'use strict';\nvar classof = require('../internals/classof-raw');\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","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\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","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\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","'use strict';\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","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\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","'use strict';\nvar call = require('../internals/function-call');\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","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\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', condition);\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","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\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","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\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` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      try {\n        var result = state.done ? undefined : state.nextHandler();\n        return 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      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) {\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.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","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\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://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new IteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\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","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\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","'use strict';\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","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\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  activeXDocument = null; // avoid memory leak\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","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\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","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\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","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\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","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\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","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\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","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\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","'use strict';\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","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\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    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\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","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\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","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\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","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\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","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\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(O, e)) remove(result, e);\n  });\n  return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\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","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\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","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#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","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#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","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\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","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\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\nmodule.exports = function (name) {\n  var Set = getBuiltIn('Set');\n  try {\n    new Set()[name](createSetLike(0));\n    try {\n      // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n      // https://github.com/tc39/proposal-set-methods/pull/88\n      new Set()[name](createSetLike(-1));\n      return false;\n    } catch (error2) {\n      return true;\n    }\n  } catch (error) {\n    return false;\n  }\n};\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n  return set.size;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\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","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\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","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.35.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.35.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.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 ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_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","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.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","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\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","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\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","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\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","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\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","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw new $RangeError('Wrong offset');\n  return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\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","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\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","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\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","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\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","'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n  try {\n    // eslint-disable-next-line no-new-func -- safe\n    if (IS_NODE) return Function('return require(\"' + name + '\")')();\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\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","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.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","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\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","'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw new RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\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// `%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);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n    configurable: true,\n    get: function detached() {\n      return isDetached(this);\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#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","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#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","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global[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://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  every: function every(predicate) {\n    anObject(this);\n    aCallable(predicate);\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","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\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://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\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://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    aCallable(mapper);\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  some: function some(predicate) {\n    anObject(this);\n    aCallable(predicate);\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","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar parseJSONString = require('../internals/parse-json-string');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar JSON = global.JSON;\nvar Number = global.Number;\nvar SyntaxError = global.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);\n    else throw new SyntaxError('Failed to parse number at: ' + i);\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, ++i);\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","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n  difference: difference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n  // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n  return Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2]))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  intersection: intersection\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n  isDisjointFrom: isDisjointFrom\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n  isSubsetOf: isSubsetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n  isSupersetOf: isSupersetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n  symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n  union: union\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\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(global, 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","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\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","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\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","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\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","/* Copyright 2020 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\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n *              `../scripting_api/` folders, hence be EXTREMELY careful about\n *              introducing any dependencies here since that can lead to an\n *              unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\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\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static T_rgb() {\n    return [null];\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\n      \"RGB\",\n      1 - Math.min(1, c + k),\n      1 - Math.min(1, m + k),\n      1 - Math.min(1, y + k),\n    ];\n  }\n\n  static CMYK_rgb([c, y, m, k]) {\n    return [\n      scaleAndClamp(1 - Math.min(1, c + k)),\n      scaleAndClamp(1 - Math.min(1, m + k)),\n      scaleAndClamp(1 - Math.min(1, y + k)),\n    ];\n  }\n\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\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}\n\nexport { ColorConverters };\n","/* Copyright 2014 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\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationEditorType,\n  AnnotationPrefix,\n  AnnotationType,\n  FeatureTest,\n  LINE_FACTOR,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  DOMSVGFactory,\n  getFilenameFromUrl,\n  PDFDateString,\n  setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1],\n  };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\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\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  #hasBorder = false;\n\n  constructor(\n    parameters,\n    {\n      isRenderable = false,\n      ignoreBorder = false,\n      createQuadrilaterals = false,\n    } = {}\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.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n\n  static _hasPopupData({ titleObj, contentsObj, richText }) {\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\n  }\n\n  get hasPopupData() {\n    return AnnotationElement._hasPopupData(this.data);\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLElement} A section element.\n   */\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: { page, viewport },\n    } = this;\n\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (!(this instanceof WidgetAnnotationElement)) {\n      container.tabIndex = DEFAULT_TAB_INDEX;\n    }\n\n    // The accessibility manager will move the annotation in the DOM in\n    // order to match the visual ordering.\n    // But if an annotation is above an other one, then we must draw it\n    // after the other one whatever the order is in the DOM, hence the\n    // use of the z-index.\n    container.style.zIndex = this.parent.zIndex++;\n\n    if (this.data.popupRef) {\n      container.setAttribute(\"aria-haspopup\", \"dialog\");\n    }\n\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const { rotation } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n\n    const { width, height } = getRectDims(data.rect);\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    const rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1],\n    ]);\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      container.style.borderWidth = `${data.borderStyle.width}px`;\n\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(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          container.style.borderStyle = \"solid\";\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          container.style.borderStyle = \"dashed\";\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          container.style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        container.style.borderColor = Util.makeHexColor(\n          borderColor[0] | 0,\n          borderColor[1] | 0,\n          borderColor[2] | 0\n        );\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        container.style.borderWidth = 0;\n      }\n    }\n\n    container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n    const { rotation } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      container.style.width = `${(100 * width) / pageWidth}%`;\n      container.style.height = `${(100 * height) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n\n    return container;\n  }\n\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n    const { width, height } = getRectDims(this.data.rect);\n\n    let elementWidth, elementHeight;\n    if (angle % 180 === 0) {\n      elementWidth = (100 * width) / pageWidth;\n      elementHeight = (100 * height) / pageHeight;\n    } else {\n      elementWidth = (100 * height) / pageWidth;\n      elementHeight = (100 * width) / pageHeight;\n    }\n\n    container.style.width = `${elementWidth}%`;\n    container.style.height = `${elementHeight}%`;\n\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\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] =\n        ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n      });\n    };\n\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const { display } = event.detail;\n        // See scripting/constants.js for the values of `Display`.\n        // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\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 { hidden } = 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({ preventScroll: false }), 0);\n      },\n      userName: event => {\n        // tooltip\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\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\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n\n    // Some properties may have been updated thanks to JS.\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\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        // The action has been consumed: no need to keep it.\n        delete storedData[actionName];\n      }\n    }\n  }\n\n  /**\n   * Create quadrilaterals from the annotation's quadpoints.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const { quadPoints } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n    if (quadPoints.length === 1) {\n      const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n      if (\n        rectTrX === trX &&\n        rectTrY === trY &&\n        rectBlX === blX &&\n        rectBlY === blY\n      ) {\n        // The quadpoints cover the whole annotation rectangle, so no need to\n        // create a quadrilateral.\n        return;\n      }\n    }\n\n    const { style } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const { borderColor, borderWidth } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\n        \"url('data:image/svg+xml;utf8,\",\n        `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n        ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n        `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n      ];\n      this.container.classList.add(\"hasBorder\");\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.container.classList.add(\"hasClipPath\");\n    }\n\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n\n    const { svgFactory } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\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\n    for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\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(\n        `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n      );\n    }\n\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createPopup() {\n    const { container, data } = this;\n    container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n    const popup = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate: data.modificationDate,\n        contentsObj: data.contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation,\n      },\n      parent: this.parent,\n      elements: [this],\n    });\n    this.parent.div.append(popup.render());\n  }\n\n  /**\n   * Render the annotation's HTML element(s).\n   *\n   * @public\n   * @memberof AnnotationElement\n   */\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  /**\n   * @private\n   * @returns {Array}\n   */\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const { page, id, exportValues } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue =\n            typeof exportValues === \"string\" ? exportValues : null;\n\n          const domElement = document.querySelector(\n            `[data-element-id=\"${id}\"]`\n          );\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({ id, exportValue, domElement });\n        }\n      }\n      return fields;\n    }\n    // Fallback to a regular DOM lookup, to ensure that the standalone\n    // viewer components won't break.\n    for (const domElement of document.getElementsByName(name)) {\n      const { exportValue } = 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({ id, exportValue, domElement });\n    }\n    return fields;\n  }\n\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n\n  /**\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n   *\n   * @public\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n   *          element.\n   */\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\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\n  get _isEditable() {\n    return false;\n  }\n\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: { id: editId },\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId,\n      });\n    });\n  }\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\n  render() {\n    const { data, linkService } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n\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);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n      isBound = true;\n    } else {\n      if (\n        data.actions &&\n        (data.actions.Action ||\n          data.actions[\"Mouse Up\"] ||\n          data.actions[\"Mouse Down\"]) &&\n        this.enableScripting &&\n        this.hasJSActions\n      ) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\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\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n\n    return this.container;\n  }\n\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination) {\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 === /* isTooltipOnly = */ \"\") {\n      this.#setInternalLink();\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind attachments to the link element.\n   * @param {Object} link\n   * @param {Object} attachment\n   * @param {str} [dest]\n   */\n  #bindAttachment(link, attachment, dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(\n        attachment.content,\n        attachment.filename,\n        dest\n      );\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind SetOCGState actions to the link element.\n   * @param {Object} link\n   * @param {Object} action\n   */\n  #bindSetOCGState(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind JS actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} data\n   * @memberof LinkAnnotationElement\n   */\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([\n      [\"Action\", \"onclick\"],\n      [\"Mouse Up\", \"onmouseup\"],\n      [\"Mouse Down\", \"onmousedown\"],\n    ]);\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\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n\n    if (!this._fieldObjects) {\n      warn(\n        `_bindResetFormAction - \"resetForm\" action not supported, ` +\n          \"ensure that the `fieldObjects` parameter is provided.\"\n      );\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n\n    link.onclick = () => {\n      otherClickAction?.();\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include,\n      } = resetForm;\n\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 { id } 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\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const { id } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"checkbox\":\n          case \"radiobutton\": {\n            const value = field.defaultValue === field.exportValues;\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"combobox\":\n          case \"listbox\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          default:\n            continue;\n        }\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\n      if (this.enableScripting) {\n        // Update the values in the sandbox.\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\",\n          },\n        });\n      }\n\n      return false;\n    };\n  }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n  }\n\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n\n    const image = document.createElement(\"img\");\n    image.src =\n      this.imageResourcesPath +\n      \"annotation-\" +\n      this.data.name.toLowerCase() +\n      \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\n      \"data-l10n-args\",\n      JSON.stringify({ type: this.data.name })\n    );\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.append(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    // Show only the container for unsupported field types.\n    if (this.data.alternativeText) {\n      this.container.title = this.data.alternativeText;\n    }\n\n    return this.container;\n  }\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\n  _getKeyModifier(event) {\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      // Mouse events\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      // Non-mouse events\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\n        if (!valueGetter) {\n          return;\n        }\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\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 ||= { focused: false };\n        }\n        this._setEventListener(\n          element,\n          elementData,\n          baseName,\n          eventName,\n          getter\n        );\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          // Ensure that elementData will have the correct value.\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\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor =\n      color === null\n        ? \"transparent\"\n        : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const { fontColor } = this.data.defaultAppearanceData;\n    const fontSize =\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n    const style = element.style;\n\n    // TODO: If the font-size is zero, calculate it based on the height and\n    //       width of the element.\n    // Not setting `style.fontSize` will use the default font-size for now.\n\n    // We don't use the font, as specified in the PDF document, for the <input>\n    // element. Hence using the original `fontSize` could look bad, which is why\n    // it's instead based on the field height.\n    // If the height is \"big\" then it could lead to a too big font size\n    // so in this case use the one we've in the pdf (hence the min).\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(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(lineHeight / LINE_FACTOR)\n      );\n    } else {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(height / LINE_FACTOR)\n      );\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\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}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable =\n      parameters.renderForms ||\n      parameters.data.hasOwnCanvas ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, { isRenderable });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(\n      base.name,\n      /* skipId = */ base.id\n    )) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, { [keyInStorage]: value });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    this.container.classList.add(\"textWidgetAnnotation\");\n\n    let element = null;\n    if (this.renderForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\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\n      let fieldFormattedValues =\n        storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false,\n      };\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 = \"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      element.setAttribute(\"data-element-id\", id);\n\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n\n      this._setRequired(element, this.data.required);\n\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, { value: event.target.value });\n        this.setPropertyOnSiblings(\n          element,\n          \"value\",\n          event.target.value,\n          \"value\"\n        );\n        elementData.formattedValue = null;\n      });\n\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n\n      let blurListener = event => {\n        const { formattedValue } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        // Reset the cursor position to the start of the field (issue 12359).\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const { target } = event;\n          if (elementData.userValue) {\n            target.value = elementData.userValue;\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\n            elementData.focused = true;\n          }\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              storage.setValue(id, { value: elementData.userValue.toString() });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const { formattedValue } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (\n                formattedValue !== null &&\n                formattedValue !== undefined &&\n                event.target !== document.activeElement\n              ) {\n                // Input hasn't the focus so display formatted string\n                event.target.value = formattedValue;\n              }\n              storage.setValue(id, {\n                formattedValue,\n              });\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const { charLimit } = event.detail;\n              const { target } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\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, { 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\n        // Even if the field hasn't any actions\n        // leaving it can still trigger some actions with Calculate\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          // If the key is one of Escape, Enter then the data are committed.\n          // If we've a Tab then data will be committed on blur.\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            // When we've a multiline field, \"Enter\" key is a key as the other\n            // hence we don't commit the data (Acrobat behaves the same way)\n            // (see issue #15627).\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const { value } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          // Save the entered 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 { value } = event.target;\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\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const { data, target } = event;\n            const { value, selectionStart, selectionEnd } = target;\n\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n\n            switch (event.inputType) {\n              // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n              case \"deleteWordBackward\": {\n                const match = value\n                  .substring(0, selectionStart)\n                  .match(/\\w*[^\\w]*$/);\n                if (match) {\n                  selStart -= match[0].length;\n                }\n                break;\n              }\n              case \"deleteWordForward\": {\n                const match = value\n                  .substring(selectionStart)\n                  .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\n            // We handle the event ourselves.\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\n        this._setEventListeners(\n          element,\n          elementData,\n          [\n            [\"focus\", \"Focus\"],\n            [\"blur\", \"Blur\"],\n            [\"mousedown\", \"Mouse Down\"],\n            [\"mouseenter\", \"Mouse Enter\"],\n            [\"mouseleave\", \"Mouse Exit\"],\n            [\"mouseup\", \"Mouse Up\"],\n          ],\n          event => event.target.value\n        );\n      }\n\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--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\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { 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      // The value has been changed through js and set in annotationStorage.\n      value = value !== \"Off\";\n      storage.setValue(id, { value });\n    }\n\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\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 = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, { value: curChecked });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\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, { value: event.target.checked });\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { 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      // The value has been changed through js and set in annotationStorage.\n      value = value !== data.buttonValue;\n      storage.setValue(id, { value });\n    }\n\n    if (value) {\n      // It's possible that multiple radio buttons are checked.\n      // So if this one is checked we just reset the other ones.\n      // (see bug 1864136). Then when the other ones will be rendered they will\n      // unchecked (because of their value in the storage).\n      // Consequently, the first checked radio button will be the only checked\n      // one.\n      for (const radio of this._getElementsByName(\n        data.fieldName,\n        /* skipId = */ id\n      )) {\n        storage.setValue(radio.id, { value: false });\n      }\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\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 = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n        storage.setValue(radio.id, { value: false });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked =\n        defaultValue !== null &&\n        defaultValue !== undefined &&\n        defaultValue === data.buttonValue;\n    });\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, { value: curChecked });\n            }\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n  }\n\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n    if (this.data.alternativeText) {\n      container.title = this.data.alternativeText;\n    }\n\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n\n    return container;\n  }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { 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\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue,\n    });\n\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\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\n    // Insert the options into the choice field.\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\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\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const { options, multiple } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1\n          ? null\n          : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter\n        .call(options, option => option.selected)\n        .map(option => option[name]);\n    };\n\n    let selectedValues = getValue(/* isExport */ false);\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => {\n        return { displayValue: option.textContent, exportValue: option.value };\n      });\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(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ 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(\n                options,\n                option => option.selected\n              );\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, { value: null, items: [] });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          insert(event) {\n            const { index, displayValue, exportValue } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          items(event) {\n            const { items } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const { displayValue, exportValue } = 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(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ 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(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(/* isExport */ true);\n        storage.setValue(id, { value: exportValue });\n\n        event.preventDefault();\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false,\n          },\n        });\n      });\n\n      this._setEventListeners(\n        selectElement,\n        null,\n        [\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n          [\"input\", \"Action\"],\n          [\"input\", \"Validate\"],\n        ],\n        event => event.target.value\n      );\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, { value: getValue(/* isExport */ true) });\n      });\n    }\n\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {\n      // Just use the default font size...\n      // it's a bit hard to guess what is a good size.\n    }\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const { data, elements } = parameters;\n    super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n    this.elements = elements;\n  }\n\n  render() {\n    this.container.classList.add(\"popupAnnotation\");\n\n    const popup = new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\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    });\n\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n\n    this.container.setAttribute(\n      \"aria-controls\",\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n    );\n\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  #boundKeyDown = this.#keyDown.bind(this);\n\n  #boundHide = this.#hide.bind(this);\n\n  #boundShow = this.#show.bind(this);\n\n  #boundToggle = this.#toggle.bind(this);\n\n  #color = null;\n\n  #container = null;\n\n  #contentsObj = null;\n\n  #dateObj = null;\n\n  #elements = null;\n\n  #parent = null;\n\n  #parentRect = null;\n\n  #pinned = false;\n\n  #popup = null;\n\n  #rect = null;\n\n  #richText = null;\n\n  #titleObj = null;\n\n  #wasVisible = false;\n\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  }) {\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\n    // The modification date is shown in the popup instead of the creation\n    // date if it is available and can be parsed correctly, which is\n    // consistent with other viewers such as Adobe Acrobat.\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n    // Attach the event listeners to the trigger element.\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle);\n      element.addEventListener(\"mouseenter\", this.#boundShow);\n      element.addEventListener(\"mouseleave\", this.#boundHide);\n      element.classList.add(\"popupTriggerArea\");\n    }\n\n    // Attach the event listener to toggle the popup with the keyboard.\n    for (const element of elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n    }\n\n    this.#container.hidden = true;\n    if (open) {\n      this.#toggle();\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // Since the popup is lazily created, we need to ensure that it'll be\n      // created and displayed during reference tests.\n      this.#parent.popupShow.push(async () => {\n        if (this.#container.hidden) {\n          this.#show();\n        }\n      });\n    }\n  }\n\n  render() {\n    if (this.#popup) {\n      return;\n    }\n\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.#parent;\n    const popup = (this.#popup = document.createElement(\"div\"));\n    popup.className = \"popup\";\n\n    if (this.#color) {\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n        ...this.#color\n      ));\n      if (\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n      ) {\n        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n      } else {\n        // color-mix isn't supported in some browsers hence this version.\n        // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n        // TODO: Use color-mix when it's supported everywhere.\n        // Enlighten the color.\n        const BACKGROUND_ENLIGHT = 0.7;\n        popup.style.backgroundColor = Util.makeHexColor(\n          ...this.#color.map(c =>\n            Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n          )\n        );\n      }\n    }\n\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    const title = document.createElement(\"h1\");\n    header.append(title);\n    ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n    popup.append(header);\n\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.classList.add(\"popupDate\");\n      modificationDate.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-annotation-date-string\"\n      );\n      modificationDate.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({\n          date: this.#dateObj.toLocaleDateString(),\n          time: this.#dateObj.toLocaleTimeString(),\n        })\n      );\n      header.append(modificationDate);\n    }\n\n    const contentsObj = this.#contentsObj;\n    const richText = this.#richText;\n    if (\n      richText?.str &&\n      (!contentsObj?.str || contentsObj.str === richText.str)\n    ) {\n      XfaLayer.render({\n        xfaHtml: richText.html,\n        intent: \"richText\",\n        div: popup,\n      });\n      popup.lastChild.classList.add(\"richText\", \"popupContent\");\n    } else {\n      const contents = this._formatContents(contentsObj);\n      popup.append(contents);\n    }\n\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\n    const normalizedRect = Util.normalizeRect([\n      rect[0],\n      view[3] - rect[1] + view[1],\n      rect[2],\n      view[3] - rect[3] + view[1],\n    ]);\n\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n      : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n\n    const { style } = this.#container;\n    style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n    this.#container.append(popup);\n  }\n\n  /**\n   * Format the contents of the popup by adding newlines where necessary.\n   *\n   * @private\n   * @param {Object<string, string>} contentsObj\n   * @memberof PopupElement\n   * @returns {HTMLParagraphElement}\n   */\n  _formatContents({ str, dir }) {\n    const p = document.createElement(\"p\");\n    p.classList.add(\"popupContent\");\n    p.dir = dir;\n    const lines = str.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    return p;\n  }\n\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n      this.#toggle();\n    }\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   */\n  #toggle() {\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\n  /**\n   * Show the popup.\n   */\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#container.hidden = false;\n      this.#container.style.zIndex =\n        parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n\n  /**\n   * Hide the popup.\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 =\n      parseInt(this.#container.style.zIndex) - 1000;\n  }\n\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n\n  maybeShow() {\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n\n  get isVisible() {\n    return this.#container.hidden === false;\n  }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n\n    if (this.textContent) {\n      const content = 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\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n\n  get _isEditable() {\n    return this.data.hasOwnCanvas;\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\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    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\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    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const circle = (this.#circle =\n      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    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let points = [];\n    for (const coordinate of data.vertices) {\n      const x = coordinate.x - data.rect[0];\n      const y = data.rect[3] - coordinate.y;\n      points.push(x + \",\" + y);\n    }\n    points = points.join(\" \");\n\n    const polyline = (this.#polyline = this.svgFactory.createElement(\n      this.svgElementName\n    ));\n    polyline.setAttribute(\"points\", points);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  #polylines = [];\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"inkAnnotation\";\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = \"svg:polyline\";\n    this.annotationEditorType = AnnotationEditorType.INK;\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    for (const inkList of data.inkLists) {\n      // Convert the ink list to a single points string that the SVG\n      // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n      // calculated from a bottom left origin, so transform the polyline\n      // coordinates to a top left origin for the SVG element.\n      let points = [];\n      for (const coordinate of inkList) {\n        const x = coordinate.x - data.rect[0];\n        const y = data.rect[3] - coordinate.y;\n        points.push(`${x},${y}`);\n      }\n      points = points.join(\" \");\n\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", points);\n      // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n      // won't be possible to open/close the popup (note e.g. issue 11122).\n      polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n      polyline.setAttribute(\"stroke\", \"transparent\");\n      polyline.setAttribute(\"fill\", \"transparent\");\n\n      // Create the popup ourselves so that we can bind it to the polyline\n      // instead of to the entire container (which is the default).\n      if (!data.popupRef && this.hasPopupData) {\n        this._createPopup();\n      }\n\n      svg.append(polyline);\n    }\n\n    this.container.append(svg);\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"highlightAnnotation\");\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"underlineAnnotation\");\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"squigglyAnnotation\");\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"strikeoutAnnotation\");\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n\n    const { filename, content } = this.data.file;\n    this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n    this.content = content;\n\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      filename,\n      content,\n    });\n  }\n\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n\n    const { container, data } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      // Unfortunately it seems that it's not clearly specified exactly what\n      // names are actually valid, since Table 184 contains:\n      //   Conforming readers shall provide predefined icon appearances for at\n      //   least the following standard names: GraphPushPin, PaperclipTag.\n      //   Additional names may be supported as well. Default value: PushPin.\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${\n        /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n      }.svg`;\n\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(\n          data.fillAlpha * 100\n        )}%);`;\n\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          this.container.classList.add(\"hasFillAlpha\");\n        }\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n\n    const { isMac } = FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n\n    container.append(trigger);\n    return container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   */\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n *   The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n  #accessibilityManager = null;\n\n  #annotationCanvasMap = null;\n\n  #editableAnnotations = new Map();\n\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    page,\n    viewport,\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"showPopups\", {\n        value: async () => {\n          for (const show of this.popupShow) {\n            await show();\n          }\n        },\n      });\n      this.popupShow = [];\n    }\n  }\n\n  #appendElement(element, id) {\n    const contentElement = element.firstChild || element;\n    contentElement.id = `${AnnotationPrefix}${id}`;\n\n    this.div.append(element);\n    this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      element,\n      contentElement,\n      /* isRemovable = */ false\n    );\n  }\n\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @param {AnnotationLayerParameters} params\n   * @memberof AnnotationLayer\n   */\n  async render(params) {\n    const { annotations } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n\n    const popupToElements = new Map();\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: params.linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null,\n    };\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        const { width, height } = getRectDims(data.rect);\n        if (width <= 0 || height <= 0) {\n          continue; // Ignore empty annotations.\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          // Ignore popup annotations without a corresponding annotation.\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n\n      if (!isPopupAnnotation && 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      if (element.annotationEditorType > 0) {\n        this.#editableAnnotations.set(element.data.id, element);\n      }\n\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      this.#appendElement(rendered, data.id);\n    }\n\n    this.#setAnnotationCanvasMap();\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @param {AnnotationLayerParameters} viewport\n   * @memberof AnnotationLayer\n   */\n  update({ viewport }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, { rotation: viewport.rotation });\n\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\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\n      const { firstChild } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else {\n        firstChild.before(canvas);\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n}\n\nexport {\n  AnnotationLayer,\n  FreeTextAnnotationElement,\n  InkAnnotationElement,\n  StampAnnotationElement,\n};\n","/* Copyright 2020 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\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n  #modified = false;\n\n  #storage = new Map();\n\n  constructor() {\n    // Callbacks to signal when the modification state is set or reset.\n    // This is used by the viewer to only bind on `beforeunload` if forms\n    // are actually edited to prevent doing so unconditionally since that\n    // can have undesirable effects.\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n\n  /**\n   * Get the value for a given key if it exists, or return the default value.\n   * @param {string} key\n   * @param {Object} defaultValue\n   * @returns {Object}\n   */\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  /**\n   * Get the value for a given key.\n   * @param {string} key\n   * @returns {Object}\n   */\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n\n  /**\n   * Remove a value from the storage.\n   * @param {string} key\n   */\n  remove(key) {\n    this.#storage.delete(key);\n\n    if (this.#storage.size === 0) {\n      this.resetModified();\n    }\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\n  /**\n   * Set the value for a given key\n   * @param {string} key\n   * @param {Object} value\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\n    if (\n      value instanceof AnnotationEditor &&\n      typeof this.onAnnotationEditor === \"function\"\n    ) {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n\n  /**\n   * Check if the storage contains the given key.\n   * @param {string} key\n   * @returns {boolean}\n   */\n  has(key) {\n    return this.#storage.has(key);\n  }\n\n  /**\n   * @returns {Object | null}\n   */\n  getAll() {\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n  }\n\n  /**\n   * @param {Object} obj\n   */\n  setAll(obj) {\n    for (const [key, val] of Object.entries(obj)) {\n      this.setValue(key, val);\n    }\n  }\n\n  get size() {\n    return this.#storage.size;\n  }\n\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\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\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\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\n    for (const [key, val] of this.#storage) {\n      const serialized =\n        val instanceof AnnotationEditor\n          ? val.serialize(/* isForCopying = */ false, context)\n          : val;\n      if (serialized) {\n        map.set(key, serialized);\n\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n\n    if (hasBitmap) {\n      // We must transfer the bitmap data separately, since it can be changed\n      // during serialization with SVG images.\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n\n    return map.size > 0\n      ? { map, hash: hash.hexdigest(), transfer }\n      : SerializableEmpty;\n  }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n\n  constructor(parent) {\n    super();\n    const { map, hash, transfer } = parent.serializable;\n    // Create a *copy* of the data, since Objects are passed by reference in JS.\n    const clone = structuredClone(map, transfer ? { transfer } : null);\n\n    this.#serializable = { map: clone, hash, transfer };\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  // eslint-disable-next-line getter-return\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    return this.#serializable;\n  }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 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\n/**\n * @module pdfjsLib\n */\n\nimport {\n  AbortException,\n  AnnotationMode,\n  assert,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isNodeJS,\n  MAX_IMAGE_SIZE_TO_CACHE,\n  MissingPDFException,\n  PasswordException,\n  PromiseCapability,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  stringToBytes,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationStorage,\n  PrintAnnotationStorage,\n  SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMFilterFactory,\n  DOMStandardFontDataFactory,\n  isDataScheme,\n  isValidFetchUrl,\n  PageViewport,\n  RenderingCancelledException,\n  StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeCanvasFactory\n    : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeCMapReaderFactory\n    : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeFilterFactory\n    : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeStandardFontDataFactory\n    : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n *            Int16Array | Uint16Array |\n *            Int32Array | Uint32Array | Float32Array |\n *            Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n *   NOTE: If TypedArrays are used they will generally be transferred to the\n *   worker-thread. This will help reduce main-thread memory usage, however\n *   it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n *   cross-site Access-Control requests should be made using credentials such\n *   as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n *   transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n *   per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n *   parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n *   from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n *   attempting to recover valid absolute URLs for annotations, and outline\n *   items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n *   located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n *   packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n *   reading built-in CMap files. Providing a custom factory is useful for\n *   environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n *   embedded in the PDF document will fallback to a system font.\n *   The default value is `true` in web environments and `false` in Node.js;\n *   unless `disableFontFace === true` in which case this defaults to `false`\n *   regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n *   files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n *   when reading the standard font files. Providing a custom factory is useful\n *   for environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n *   worker-thread when reading CMap and standard font files. When `true`,\n *   the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n *   pixels, i.e. width * height. Images above this value will not be rendered.\n *   Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n *   as JavaScript. Primarily used to improve performance of font rendering, and\n *   when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n *   If disabled, fonts will be rendered using a built-in font renderer that\n *   constructs the glyphs with primitive path commands.\n *   The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n *   which are unused during rendering of PDF documents, when exporting the\n *   parsed font data from the worker-thread. This may be useful for debugging\n *   purposes (and backwards compatibility), but note that it will lead to\n *   increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n *   The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n *   context to create elements with and to load resources, such as fonts,\n *   into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n *   files. When enabled, and if the server supports partial content requests,\n *   then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n *   By default PDF.js attempts to load PDF files in chunks. The default value\n *   is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n *   data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *\n *   NOTE: It is also necessary to disable streaming, see above, in order for\n *   disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n *   (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n *   when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n *   to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n *         already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n    if (typeof src === \"string\" || src instanceof URL) {\n      src = { url: src };\n    } else if (isArrayBuffer(src)) {\n      src = { data: src };\n    }\n  }\n  if (typeof src !== \"object\") {\n    throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n  }\n  if (!src.url && !src.data && !src.range) {\n    throw new Error(\n      \"Invalid parameter object: need either .data, .range or .url\"\n    );\n  }\n  const task = new PDFDocumentLoadingTask();\n  const { docId } = task;\n\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 =\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize =\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n      ? src.rangeChunkSize\n      : DEFAULT_RANGE_CHUNK_SIZE;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n  // URLs anyway. We want to avoid sending them to the worker-thread, since\n  // they contain the *entire* PDF document and can thus be arbitrarily long.\n  const docBaseUrl =\n    typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n      ? src.docBaseUrl\n      : null;\n  const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n  const standardFontDataUrl =\n    typeof src.standardFontDataUrl === \"string\"\n      ? src.standardFontDataUrl\n      : null;\n  const StandardFontDataFactory =\n    src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize =\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n      ? src.maxImageSize\n      : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported =\n    typeof src.isOffscreenCanvasSupported === \"boolean\"\n      ? src.isOffscreenCanvasSupported\n      : !isNodeJS;\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n    ? src.canvasMaxAreaInBytes\n    : -1;\n  const disableFontFace =\n    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\n  // Parameters whose default values depend on other parameters.\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n  const useSystemFonts =\n    typeof src.useSystemFonts === \"boolean\"\n      ? src.useSystemFonts\n      : !isNodeJS && !disableFontFace;\n  const useWorkerFetch =\n    typeof src.useWorkerFetch === \"boolean\"\n      ? src.useWorkerFetch\n      : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        (CMapReaderFactory === DOMCMapReaderFactory &&\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\n          cMapUrl &&\n          standardFontDataUrl &&\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\n          isValidFetchUrl(standardFontDataUrl, document.baseURI));\n  const canvasFactory =\n    src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n  const filterFactory =\n    src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n  // Parameters only intended for development/testing purposes.\n  const styleElement =\n    typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n      ? src.styleElement\n      : null;\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(verbosity);\n\n  // Ensure that the various factories can be initialized, when necessary,\n  // since the user may provide *custom* ones.\n  const transportFactory = {\n    canvasFactory,\n    filterFactory,\n  };\n  if (!useWorkerFetch) {\n    transportFactory.cMapReaderFactory = new CMapReaderFactory({\n      baseUrl: cMapUrl,\n      isCompressed: cMapPacked,\n    });\n    transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n      baseUrl: standardFontDataUrl,\n    });\n  }\n\n  if (!worker) {\n    const workerParams = {\n      verbosity,\n      port: GlobalWorkerOptions.workerPort,\n    };\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    worker = workerParams.port\n      ? PDFWorker.fromPort(workerParams)\n      : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n\n  const fetchDocParams = {\n    docId,\n    apiVersion:\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null,\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      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      cMapUrl: useWorkerFetch ? cMapUrl : null,\n      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n    },\n  };\n  const transportParams = {\n    ignoreErrors,\n    isEvalSupported,\n    disableFontFace,\n    fontExtraProperties,\n    enableXfa,\n    ownerDocument,\n    disableAutoFetch,\n    pdfBug,\n    styleElement,\n  };\n\n  worker.promise\n    .then(function () {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n\n      const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n      const networkStreamPromise = new Promise(function (resolve) {\n        let networkStream;\n        if (rangeTransport) {\n          networkStream = new PDFDataTransportStream(\n            {\n              length,\n              initialData: rangeTransport.initialData,\n              progressiveDone: rangeTransport.progressiveDone,\n              contentDispositionFilename:\n                rangeTransport.contentDispositionFilename,\n              disableRange,\n              disableStream,\n            },\n            rangeTransport\n          );\n        } else if (!data) {\n          if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n            throw new Error(\"Not implemented: createPDFNetworkStream\");\n          }\n          const createPDFNetworkStream = params => {\n            if (\n              typeof PDFJSDev !== \"undefined\" &&\n              PDFJSDev.test(\"GENERIC\") &&\n              isNodeJS\n            ) {\n              return new PDFNodeStream(params);\n            }\n            return isValidFetchUrl(params.url)\n              ? new PDFFetchStream(params)\n              : new PDFNetworkStream(params);\n          };\n\n          networkStream = createPDFNetworkStream({\n            url,\n            length,\n            httpHeaders,\n            withCredentials,\n            rangeChunkSize,\n            disableRange,\n            disableStream,\n          });\n        }\n        resolve(networkStream);\n      });\n\n      return Promise.all([workerIdPromise, networkStreamPromise]).then(\n        function ([workerId, networkStream]) {\n          if (task.destroyed) {\n            throw new Error(\"Loading aborted\");\n          }\n\n          const messageHandler = new MessageHandler(\n            docId,\n            workerId,\n            worker.port\n          );\n          const transport = new WorkerTransport(\n            messageHandler,\n            task,\n            networkStream,\n            transportParams,\n            transportFactory\n          );\n          task._transport = transport;\n          messageHandler.send(\"Ready\", null);\n        }\n      );\n    })\n    .catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n *   the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n  const workerId = await worker.messageHandler.sendWithPromise(\n    \"GetDocRequest\",\n    source,\n    source.data ? [source.data.buffer] : null\n  );\n\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n  return workerId;\n}\n\nfunction getUrlProp(val) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    return null; // The 'url' is unused with `PDFDataRangeTransport`.\n  }\n  if (val instanceof URL) {\n    return val.href;\n  }\n  try {\n    // The full path is required in the 'url' field.\n    return new URL(val, window.location).href;\n  } catch {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"GENERIC\") &&\n      isNodeJS &&\n      typeof val === \"string\"\n    ) {\n      return val; // Use the url as-is in Node.js environments.\n    }\n  }\n  throw new Error(\n    \"Invalid PDF url data: \" +\n      \"either string or URL-object is expected in the url property.\"\n  );\n}\n\nfunction getDataProp(val) {\n  // Converting string or array-like data to Uint8Array.\n  if (\n    typeof PDFJSDev !== \"undefined\" &&\n    PDFJSDev.test(\"GENERIC\") &&\n    isNodeJS &&\n    typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n    val instanceof Buffer // eslint-disable-line no-undef\n  ) {\n    throw new Error(\n      \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n    );\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    // Use the data as-is when it's already a Uint8Array that completely\n    // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n    // issues when transferring it to the worker-thread.\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\n    \"Invalid PDF binary data: either TypedArray, \" +\n      \"string, or array-like object is expected in the data property.\"\n  );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n\n  constructor() {\n    this._capability = new PromiseCapability();\n    this._transport = null;\n    this._worker = null;\n\n    /**\n     * Unique identifier for the document loading task.\n     * @type {string}\n     */\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n    /**\n     * Whether the loading task is destroyed or not.\n     * @type {boolean}\n     */\n    this.destroyed = false;\n\n    /**\n     * Callback to request a password if a wrong or no password was provided.\n     * The callback receives two parameters: a function that should be called\n     * with the new password, and a reason (see {@link PasswordResponses}).\n     * @type {function}\n     */\n    this.onPassword = null;\n\n    /**\n     * Callback to be able to monitor the loading progress of the PDF file\n     * (necessary to implement e.g. a loading bar).\n     * The callback receives an {@link OnProgressParameters} argument.\n     * @type {function}\n     */\n    this.onProgress = null;\n  }\n\n  /**\n   * Promise for document loading task completion.\n   * @type {Promise<PDFDocumentProxy>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Abort all network requests and destroy the worker.\n   * @returns {Promise<void>} A promise that is resolved when destruction is\n   *   completed.\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\n    this._transport = null;\n    if (this._worker) {\n      this._worker.destroy();\n      this._worker = null;\n    }\n  }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n  /**\n   * @param {number} length\n   * @param {Uint8Array|null} initialData\n   * @param {boolean} [progressiveDone]\n   * @param {string} [contentDispositionFilename]\n   */\n  constructor(\n    length,\n    initialData,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = new PromiseCapability();\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n\n  /**\n   * @param {number} begin\n   * @param {Uint8Array|null} chunk\n   */\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  /**\n   * @param {number} loaded\n   * @param {number|undefined} total\n   */\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  /**\n   * @param {Uint8Array|null} chunk\n   */\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n\n  /**\n   * @param {number} begin\n   * @param {number} end\n   */\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => {\n          return this._transport.getXFADatasets();\n        },\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () => {\n          return this._transport.getXRefPrevValue();\n        },\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => {\n          return this._transport.getAnnotArray(pageIndex);\n        },\n      });\n    }\n  }\n\n  /**\n   * @type {AnnotationStorage} Storage for annotation data in forms.\n   */\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {number} Total number of pages in the PDF file.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n   *   identify the PDF document.\n   *   NOTE: The first element will always be defined for all PDF documents,\n   *   whereas the second element is only defined for *modified* PDF documents.\n   */\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\n   *\n   * @type {Object | null} An object representing a HTML tree structure\n   *   to render the XFA, or `null` when no XFA form exists.\n   */\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n   *   a {@link PDFPageProxy} object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {Promise<number>} A promise that is resolved with the page index,\n   *   starting from zero, that is associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n   *   with a mapping from named destinations to references.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n   *   information of the given named destination, or `null` when the named\n   *   destination is not present in the PDF file.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} containing the page labels that correspond to the page\n   *   indexes, or `null` when no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page layout name.\n   */\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with an\n   *   {Object} containing the viewer preferences, or `null` when no viewer\n   *   preferences are present in the PDF file.\n   */\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  /**\n   * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n   *   containing the destination, or `null` when no open action is present\n   *   in the PDF.\n   */\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  /**\n   * @returns {Promise<any>} A promise that is resolved with a lookup table\n   *   for mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with the JavaScript actions:\n   *     - from the name tree.\n   *     - from A or AA entries in the catalog dictionary.\n   *   , or `null` if no JavaScript exists.\n   */\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  /**\n   * @typedef {Object} OutlineNode\n   * @property {string} title\n   * @property {boolean} bold\n   * @property {boolean} italic\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\n   *   display purposes.\n   * @property {string | Array<any> | null} dest\n   * @property {string | null} url\n   * @property {string | undefined} unsafeUrl\n   * @property {boolean | undefined} newWindow\n   * @property {number | undefined} count\n   * @property {Array<OutlineNode>} items\n   */\n\n  /**\n   * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n   *   an {@link OptionalContentConfig} that contains all the optional content\n   *   groups (assuming that the document has any).\n   */\n  getOptionalContentConfig() {\n    return this._transport.getOptionalContentConfig();\n  }\n\n  /**\n   * @returns {Promise<Array<number> | null>} A promise that is resolved with\n   *   an {Array} that contains the permission flags for the PDF document, or\n   *   `null` when no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n   *   resolved with an {Object} that has `info` and `metadata` properties.\n   *   `info` is an {Object} filled with anything available in the information\n   *   dictionary and similarly `metadata` is a {Metadata} object with\n   *   information from the metadata section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @typedef {Object} MarkInfo\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n   * @property {boolean} Marked\n   * @property {boolean} UserProperties\n   * @property {boolean} Suspects\n   */\n\n  /**\n   * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\n   */\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the raw data of the PDF document.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n\n  /**\n   * @returns {Promise<{ length: number }>} A promise that is resolved when the\n   *   document's data is loaded. It is resolved with an {Object} that contains\n   *   the `length` property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * Cleans up resources allocated by the document on both the main and worker\n   * threads.\n   *\n   * NOTE: Do not, under any circumstances, call this method when rendering is\n   * currently ongoing since that may lead to rendering errors.\n   *\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n   *   NOTE: This will increase persistent memory usage, hence don't use this\n   *   option unless absolutely necessary. The default value is `false`.\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\n   */\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @type {DocumentInitParameters} A subset of the current\n   *   {DocumentInitParameters}, which are needed in the viewer.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  /**\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n   */\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n   *   resolved with an {Object} containing /AcroForm field data for the JS\n   *   sandbox, or `null` when no field data is present in the PDF file.\n   */\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  /**\n   * @returns {Promise<boolean>} A promise that is resolved with `true`\n   *   if some /AcroForm fields have JavaScript actions.\n   */\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n   *   {Array<string>} containing IDs of annotations that have a calculation\n   *   action, or `null` when no such annotations are present in the PDF file.\n   */\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n *   the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n *   content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n *   normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n *   items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n *   indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n *   line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n *   'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n *   'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\n *   or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n *   Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n *   the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n *   onto the canvas, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n *   before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n *   to use for the canvas.\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n *   <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n *   a `CanvasPattern` object (a repetitive image). The default value is\n *   'rgb(255,255,255)'.\n *\n *   NOTE: This option may be partially, or completely, ignored when the\n *   `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n *   with user defined ones in order to improve readability in high contrast\n *   mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n *   A promise that should resolve with an {@link OptionalContentConfig}\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n *   the configuration will be fetched automatically with the default visibility\n *   states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n *   annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n *   in the operatorList, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n *   elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n *   functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n  #delayedCleanupTimeout = null;\n\n  #pendingCleanup = false;\n\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    /** @type {PDFObjects} */\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n\n    this._maybeCleanupAfterRender = false;\n    this._intentStates = new Map();\n    this.destroyed = false;\n  }\n\n  /**\n   * @type {number} Page number of the page. First page is 1.\n   */\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  /**\n   * @type {number} The number of degrees the page is rotated clockwise.\n   */\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  /**\n   * @type {RefProxy | null} The reference that points to this page.\n   */\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  /**\n   * @type {number} The default size of units in 1/72nds of an inch.\n   */\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  /**\n   * @type {Array<number>} An array of the visible portion of the PDF page in\n   *   user space units [x1, y1, x2, y2].\n   */\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  /**\n   * @param {GetViewportParameters} params - Viewport parameters.\n   * @returns {PageViewport} Contains 'width' and 'height' properties\n   *   along with transforms required for rendering.\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      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * @param {GetAnnotationsParameters} params - Annotation parameters.\n   * @returns {Promise<Array<any>>} A promise that is resolved with an\n   *   {Array} of the annotation objects.\n   */\n  getAnnotations({ intent = \"display\" } = {}) {\n    const intentArgs = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getAnnotations(\n      this._pageIndex,\n      intentArgs.renderingIntent\n    );\n  }\n\n  /**\n   * @returns {Promise<Object>} A promise that is resolved with an\n   *   {Object} with JS actions.\n   */\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with a fake DOM object (a tree structure where elements\n   *   are {Object} with a name, attributes (class, style, ...), value and\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n   */\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  /**\n   * Begins the process of rendering a page to the desired context.\n   *\n   * @param {RenderParameters} params - Page render parameters.\n   * @returns {RenderTask} An object that contains a promise that is\n   *   resolved when the page finishes rendering.\n   */\n  render({\n    canvasContext,\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  }) {\n    this._stats?.time(\"Overall\");\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage\n    );\n    // If there was a pending destroy, cancel it so no cleanup happens during\n    // this call to render...\n    this.#pendingCleanup = false;\n    // ... and ensure that a delayed cleanup is always aborted.\n    this.#abortDelayedCleanup();\n\n    if (!optionalContentConfigPromise) {\n      optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n    }\n\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\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const intentPrint = !!(\n      intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n    );\n\n    // If there's no displayReadyCapability yet, then the operatorList\n    // was never requested before. Make the request and create the promise.\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = new PromiseCapability();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      // Attempt to reduce memory usage during *printing*, by always running\n      // cleanup immediately once rendering has finished.\n      if (this._maybeCleanupAfterRender || intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup(/* delayed = */ !intentPrint);\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error),\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n\n      this._stats?.timeEnd(\"Rendering\");\n      this._stats?.timeEnd(\"Overall\");\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      // Only include the required properties, and *not* the entire object.\n      params: {\n        canvasContext,\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    });\n\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n\n    Promise.all([\n      intentState.displayReadyCapability.promise,\n      optionalContentConfigPromise,\n    ])\n      .then(([transparency, optionalContentConfig]) => {\n        if (this.destroyed) {\n          complete();\n          return;\n        }\n        this._stats?.time(\"Rendering\");\n\n        internalRenderTask.initializeGraphics({\n          transparency,\n          optionalContentConfig,\n        });\n        internalRenderTask.operatorListChanged();\n      })\n      .catch(complete);\n\n    return renderTask;\n  }\n\n  /**\n   * @param {GetOperatorListParameters} params - Page getOperatorList\n   *   parameters.\n   * @returns {Promise<PDFOperatorList>} A promise resolved with an\n   *   {@link PDFOperatorList} object that represents the page's operator list.\n   */\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n  } = {}) {\n    if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n      throw new Error(\"Not implemented: getOperatorList\");\n    }\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      /* isOpList = */ true\n    );\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\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = new PromiseCapability();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {ReadableStream} Stream for reading text content chunks.\n   */\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false,\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n    return this._transport.messageHandler.sendWithStream(\n      \"GetTextContent\",\n      {\n        pageIndex: this._pageIndex,\n        includeMarkedContent: includeMarkedContent === true,\n        disableNormalization: disableNormalization === true,\n      },\n      {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      }\n    );\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {Promise<TextContent>} A promise that is resolved with a\n   *   {@link TextContent} object that represents the page's text content.\n   */\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      // TODO: We need to revisit this once the XFA foreground patch lands and\n      // only do this for non-foreground XFA.\n      return this.getXfa().then(xfa => {\n        return XfaText.textContent(xfa);\n      });\n    }\n    const readableStream = this.streamTextContent(params);\n\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      pump();\n    });\n  }\n\n  /**\n   * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n   *   {@link StructTreeNode} object that represents the page's structure tree,\n   *   or `null` when no structure tree is present for the current page.\n   */\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n\n  /**\n   * Destroys the page object.\n   * @private\n   */\n  _destroy() {\n    this.destroyed = true;\n\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\n      if (intentState.opListReadCapability) {\n        // Avoid errors below, since the renderTasks are just stubs.\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    this.#abortDelayedCleanup();\n\n    return Promise.all(waitOn);\n  }\n\n  /**\n   * Cleans up resources allocated by the page.\n   *\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup(/* delayed = */ false);\n\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n\n  /**\n   * Attempts to clean up if rendering is in a state where that's possible.\n   * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n   *   performance in documents with large images.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  #tryCleanup(delayed = false) {\n    this.#abortDelayedCleanup();\n\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    if (delayed) {\n      this.#delayedCleanupTimeout = setTimeout(() => {\n        this.#delayedCleanupTimeout = null;\n        this.#tryCleanup(/* delayed = */ false);\n      }, DELAYED_CLEANUP_TIMEOUT);\n\n      return false;\n    }\n    for (const { renderTasks, operatorList } 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\n  #abortDelayedCleanup() {\n    if (this.#delayedCleanupTimeout) {\n      clearTimeout(this.#delayedCleanupTimeout);\n      this.#delayedCleanupTimeout = null;\n    }\n  }\n\n  /**\n   * @private\n   */\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return; // Rendering was cancelled.\n    }\n    this._stats?.timeEnd(\"Page Request\");\n\n    // TODO Refactor RenderPageRequest to separate rendering\n    // and operator list logic\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n\n  /**\n   * @private\n   */\n  _renderPageChunk(operatorListChunk, intentState) {\n    // Add the new chunk to the current operator list.\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\n    // Notify all the rendering tasks there are more operators to be consumed.\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup(/* delayed = */ true);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\n        '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n      );\n    }\n    const { map, transfer } = annotationStorageSerializable;\n\n    const readableStream = this._transport.messageHandler.sendWithStream(\n      \"GetOperatorList\",\n      {\n        pageIndex: this._pageIndex,\n        intent: renderingIntent,\n        cacheKey,\n        annotationStorage: map,\n      },\n      transfer\n    );\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(\n        ({ value, done }) => {\n          if (done) {\n            intentState.streamReader = null;\n            return;\n          }\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          this._renderPageChunk(value, intentState);\n          pump();\n        },\n        reason => {\n          intentState.streamReader = null;\n\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          if (intentState.operatorList) {\n            // Mark operator list as complete.\n            intentState.operatorList.lastChunk = true;\n\n            for (const internalRenderTask of intentState.renderTasks) {\n              internalRenderTask.operatorListChanged();\n            }\n            this.#tryCleanup(/* delayed = */ true);\n          }\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    };\n    pump();\n  }\n\n  /**\n   * @private\n   */\n  _abortOperatorList({ intentState, reason, force = false }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        reason instanceof Error,\n        '_abortOperatorList: Expected valid \"reason\" argument.'\n      );\n    }\n\n    if (!intentState.streamReader) {\n      return;\n    }\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    if (!force) {\n      // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n      // multiple render() calls on the same canvas, won't break all rendering.\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      // Don't immediately abort parsing on the worker-thread when rendering is\n      // cancelled, since that will unnecessarily delay re-rendering when (for\n      // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n          // Above, we prevent the total delay from becoming arbitrarily large.\n          delay += reason.extraDelay;\n        }\n\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({ intentState, reason, force: true });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader\n      .cancel(new AbortException(reason.message))\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    // Remove the current `intentState`, since a cancelled `getOperatorList`\n    // call on the worker-thread cannot be re-started...\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    // ... and force clean-up to ensure that any old state is always removed.\n    this.cleanup();\n  }\n\n  /**\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n   *   otherwise.\n   */\n  get stats() {\n    return this._stats;\n  }\n}\n\nclass LoopbackPort {\n  #listeners = new Set();\n\n  #deferred = Promise.resolve();\n\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? { transfer } : null),\n    };\n\n    this.#deferred.then(() => {\n      for (const listener of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n\n  addEventListener(name, listener) {\n    this.#listeners.add(listener);\n  }\n\n  removeEventListener(name, listener) {\n    this.#listeners.delete(listener);\n  }\n\n  terminate() {\n    this.#listeners.clear();\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n *   the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n  isWorkerDisabled: false,\n  fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n  if (isNodeJS) {\n    // Workers aren't supported in Node.js, force-disabling them there.\n    PDFWorkerUtil.isWorkerDisabled = true;\n\n    GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n      ? \"../pdf.worker.js\"\n      : \"./pdf.worker.mjs\";\n  }\n\n  // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n    let base;\n    try {\n      base = new URL(baseUrl);\n      if (!base.origin || base.origin === \"null\") {\n        return false; // non-HTTP url\n      }\n    } catch {\n      return false;\n    }\n\n    const other = new URL(otherUrl, base);\n    return base.origin === other.origin;\n  };\n\n  PDFWorkerUtil.createCDNWrapper = function (url) {\n    // We will rely on blob URL's property to specify origin.\n    // We want this function to fail in case if createObjectURL or Blob do not\n    // exist or fail for some reason -- our Worker creation will fail anyway.\n    const wrapper = `await import(\"${url}\");`;\n    return URL.createObjectURL(\n      new Blob([wrapper], { type: \"text/javascript\" })\n    );\n  };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n  static #workerPorts;\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\n    this._readyCapability = new PromiseCapability();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n\n    if (\n      (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n      port\n    ) {\n      if (PDFWorker.#workerPorts?.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n\n  /**\n   * Promise for worker initialization completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._readyCapability.promise;\n  }\n\n  /**\n   * The current `workerPort`, when it exists.\n   * @type {Worker}\n   */\n  get port() {\n    return this._port;\n  }\n\n  /**\n   * The current MessageHandler-instance.\n   * @type {MessageHandler}\n   */\n  get messageHandler() {\n    return this._messageHandler;\n  }\n\n  _initializeFromPort(port) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _initializeFromPort\");\n    }\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {\n      // Ignoring \"ready\" event -- MessageHandler should already be initialized\n      // and ready to accept messages.\n    });\n    this._readyCapability.resolve();\n    // Send global setting, e.g. verbosity level.\n    this._messageHandler.send(\"configure\", {\n      verbosity: this.verbosity,\n    });\n  }\n\n  _initialize() {\n    // If worker support isn't disabled explicit and the browser has worker\n    // support, create a new web worker and test if it/the browser fulfills\n    // all requirements to run parts of pdf.js in a web worker.\n    // Right now, the requirement is, that an Uint8Array is still an\n    // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n    if (\n      !PDFWorkerUtil.isWorkerDisabled &&\n      !PDFWorker.#mainThreadWorkerMessageHandler\n    ) {\n      let { workerSrc } = PDFWorker;\n\n      try {\n        // Wraps workerSrc path into blob URL, if the former does not belong\n        // to the same origin.\n        if (\n          typeof PDFJSDev !== \"undefined\" &&\n          PDFJSDev.test(\"GENERIC\") &&\n          !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n        ) {\n          workerSrc = PDFWorkerUtil.createCDNWrapper(\n            new URL(workerSrc, window.location).href\n          );\n        }\n\n        const worker = new Worker(workerSrc, { type: \"module\" });\n        const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n        const terminateEarly = () => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          messageHandler.destroy();\n          worker.terminate();\n          if (this.destroyed) {\n            this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          } else {\n            // Fall back to fake worker if the termination is caused by an\n            // error (e.g. NetworkError / SecurityError).\n            this._setupFakeWorker();\n          }\n        };\n\n        const onWorkerError = () => {\n          if (!this._webWorker) {\n            // Worker failed to initialize due to an error. Clean up and fall\n            // back to the fake worker.\n            terminateEarly();\n          }\n        };\n        worker.addEventListener(\"error\", onWorkerError);\n\n        messageHandler.on(\"test\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          if (data) {\n            this._messageHandler = messageHandler;\n            this._port = worker;\n            this._webWorker = worker;\n\n            this._readyCapability.resolve();\n            // Send global setting, e.g. verbosity level.\n            messageHandler.send(\"configure\", {\n              verbosity: this.verbosity,\n            });\n          } else {\n            this._setupFakeWorker();\n            messageHandler.destroy();\n            worker.terminate();\n          }\n        });\n\n        messageHandler.on(\"ready\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          try {\n            sendTest();\n          } catch {\n            // We need fallback to a faked worker.\n            this._setupFakeWorker();\n          }\n        });\n\n        const sendTest = () => {\n          const testObj = new Uint8Array();\n          // Ensure that we can use `postMessage` transfers.\n          messageHandler.send(\"test\", testObj, [testObj.buffer]);\n        };\n\n        // It might take time for the worker to initialize. We will try to send\n        // the \"test\" message immediately, and once the \"ready\" message arrives.\n        // The worker shall process only the first received \"test\" message.\n        sendTest();\n        return;\n      } catch {\n        info(\"The worker has been disabled.\");\n      }\n    }\n    // Either workers are disabled, not supported or have thrown an exception.\n    // Thus, we fallback to a faked worker.\n    this._setupFakeWorker();\n  }\n\n  _setupFakeWorker() {\n    if (!PDFWorkerUtil.isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorkerUtil.isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal\n      .then(WorkerMessageHandler => {\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          return;\n        }\n        const port = new LoopbackPort();\n        this._port = port;\n\n        // All fake workers use the same port, making id unique.\n        const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n        this._messageHandler = messageHandler;\n        this._readyCapability.resolve();\n        // Send global setting, e.g. verbosity level.\n        messageHandler.send(\"configure\", {\n          verbosity: this.verbosity,\n        });\n      })\n      .catch(reason => {\n        this._readyCapability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n        );\n      });\n  }\n\n  /**\n   * Destroys the worker instance.\n   */\n  destroy() {\n    this.destroyed = true;\n    if (this._webWorker) {\n      // We need to terminate only web worker created resource.\n      this._webWorker.terminate();\n      this._webWorker = null;\n    }\n    PDFWorker.#workerPorts?.delete(this._port);\n    this._port = null;\n    if (this._messageHandler) {\n      this._messageHandler.destroy();\n      this._messageHandler = null;\n    }\n  }\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   */\n  static fromPort(params) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: fromPort\");\n    }\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n    const cachedPort = this.#workerPorts?.get(params.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\n          \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n            \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n        );\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n\n  /**\n   * The current `workerSrc`, when it exists.\n   * @type {string}\n   */\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n\n  // Loads worker code into the main-thread.\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        // The worker was already loaded using e.g. a `<script>` tag.\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker =\n        typeof PDFJSDev === \"undefined\"\n          ? await import(\"pdfjs/pdf.worker.js\")\n          : await import(/* webpackIgnore: true */ this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  #methodPromises = new Map();\n\n  #pageCache = new Map();\n\n  #pagePromises = new Map();\n\n  #passwordCapability = null;\n\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\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._params = params;\n\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = new PromiseCapability();\n\n    this.setupMessageHandler();\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => {\n          return this.messageHandler.sendWithPromise(\"GetXFADatasets\", null);\n        },\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () => {\n          return this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null);\n        },\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => {\n          return this.messageHandler.sendWithPromise(\"GetAnnotArray\", {\n            pageIndex,\n          });\n        },\n      });\n    }\n  }\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\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n\n  getRenderingIntent(\n    intent,\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isOpList = false\n  ) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n    let annotationStorageSerializable = SerializableEmpty;\n\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\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\n        const annotationStorage =\n          renderingIntent & RenderingIntentFlag.PRINT &&\n          printAnnotationStorage instanceof PrintAnnotationStorage\n            ? printAnnotationStorage\n            : this.annotationStorage;\n\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n\n    return {\n      renderingIntent,\n      cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n      annotationStorageSerializable,\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = new PromiseCapability();\n\n    this.#passwordCapability?.reject(\n      new Error(\"Worker was destroyed during onPassword callback\")\n    );\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    // Allow `AnnotationStorage`-related clean-up when destroying the document.\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n\n      this._networkStream?.cancelAllRequests(\n        new AbortException(\"Worker was terminated.\")\n      );\n\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask } = this;\n\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetReader - no `IPDFStream` instance available.\"\n      );\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\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetReader - expected an ArrayBuffer.\"\n            );\n            // Enqueue data chunk into sink, and transfer it\n            // to other side as `Transferable` object.\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"ReaderHeadersReady\", data => {\n      const headersCapability = new PromiseCapability();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        // If stream or range are disabled, it's our only way to report\n        // loading progress.\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress) {\n            loadingTask.onProgress?.(this._lastProgress);\n          }\n          fullReader.onProgress = evt => {\n            loadingTask.onProgress?.({\n              loaded: evt.loaded,\n              total: evt.total,\n            });\n          };\n        }\n\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength,\n        });\n      }, headersCapability.reject);\n\n      return headersCapability.promise;\n    });\n\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetRangeReader - no `IPDFStream` instance available.\"\n      );\n      const rangeReader = this._networkStream.getRangeReader(\n        data.begin,\n        data.end\n      );\n\n      // When streaming is enabled, it's possible that the data requested here\n      // has already been fetched via the `_fullRequestReader` implementation.\n      // However, given that the PDF data is loaded asynchronously on the\n      // main-thread and then sent via `postMessage` to the worker-thread,\n      // it may not have been available during parsing (hence the attempt to\n      // use range requests here).\n      //\n      // To avoid wasting time and resources here, we'll thus *not* dispatch\n      // range requests if the data was already loaded but has not been sent to\n      // the worker-thread yet (which will happen via the `_fullRequestReader`).\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetRangeReader - expected an ArrayBuffer.\"\n            );\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n\n    messageHandler.on(\"DocException\", function (ex) {\n      let reason;\n      switch (ex.name) {\n        case \"PasswordException\":\n          reason = new PasswordException(ex.message, ex.code);\n          break;\n        case \"InvalidPDFException\":\n          reason = new InvalidPDFException(ex.message);\n          break;\n        case \"MissingPDFException\":\n          reason = new MissingPDFException(ex.message);\n          break;\n        case \"UnexpectedResponseException\":\n          reason = new UnexpectedResponseException(ex.message, ex.status);\n          break;\n        case \"UnknownErrorException\":\n          reason = new UnknownErrorException(ex.message, ex.details);\n          break;\n        default:\n          unreachable(\"DocException - expected a valid Error.\");\n      }\n      loadingTask._capability.reject(reason);\n    });\n\n    messageHandler.on(\"PasswordRequest\", exception => {\n      this.#passwordCapability = new PromiseCapability();\n\n      if (loadingTask.onPassword) {\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({ password });\n          }\n        };\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this.#passwordCapability.reject(ex);\n        }\n      } else {\n        this.#passwordCapability.reject(\n          new PasswordException(exception.message, exception.code)\n        );\n      }\n      return this.#passwordCapability.promise;\n    });\n\n    messageHandler.on(\"DataLoaded\", data => {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length,\n      });\n\n      this.downloadInfoCapability.resolve(data);\n    });\n\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n\n      switch (type) {\n        case \"Font\":\n          const params = this._params;\n\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\n          const inspectFont =\n            params.pdfBug && globalThis.FontInspector?.enabled\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n              : null;\n          const font = new FontFaceObject(exportedData, {\n            isEvalSupported: params.isEvalSupported,\n            disableFontFace: params.disableFontFace,\n            ignoreErrors: params.ignoreErrors,\n            inspectFont,\n          });\n\n          this.fontLoader\n            .bind(font)\n            .catch(reason => {\n              return messageHandler.sendWithPromise(\"FontFallback\", { id });\n            })\n            .finally(() => {\n              if (!params.fontExtraProperties && font.data) {\n                // Immediately release the `font.data` property once the font\n                // has been attached to the DOM, since it's no longer needed,\n                // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n                // Since `font.data` could be very large, e.g. in some cases\n                // multiple megabytes, this will help reduce memory usage.\n                font.data = null;\n              }\n              this.commonObjs.resolve(id, font);\n            });\n          break;\n        case \"CopyLocalImage\":\n          const { imageRef } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n\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        case \"Pattern\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n\n      return null;\n    });\n\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        // Ignore any pending requests if the worker was terminated.\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      // Don't store data *after* cleanup has successfully run, see bug 1854145.\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n\n          // Heuristic that will allow us not to store large data.\n          if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n            pageProxy._maybeCleanupAfterRender = true;\n          }\n          break;\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\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total,\n      });\n    });\n\n    messageHandler.on(\"FetchBuiltInCMap\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.cMapReaderFactory) {\n        return Promise.reject(\n          new Error(\n            \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.cMapReaderFactory.fetch(data);\n    });\n\n    messageHandler.on(\"FetchStandardFontData\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.standardFontDataFactory) {\n        return Promise.reject(\n          new Error(\n            \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.standardFontDataFactory.fetch(data);\n    });\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\n        \"saveDocument called while `annotationStorage` is empty, \" +\n          \"please use the getData-method instead.\"\n      );\n    }\n    const { map, transfer } = this.annotationStorage.serializable;\n\n    return this.messageHandler\n      .sendWithPromise(\n        \"SaveDocument\",\n        {\n          isPureXfa: !!this._htmlForXfa,\n          numPages: this._numPages,\n          annotationStorage: map,\n          filename: this._fullReader?.filename ?? null,\n        },\n        transfer\n      )\n      .finally(() => {\n        this.annotationStorage.resetModified();\n      });\n  }\n\n  getPage(pageNumber) {\n    if (\n      !Number.isInteger(pageNumber) ||\n      pageNumber <= 0 ||\n      pageNumber > this._numPages\n    ) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(\"GetPage\", {\n        pageIndex,\n      })\n      .then(pageInfo => {\n        if (this.destroyed) {\n          throw new Error(\"Transport destroyed\");\n        }\n        const page = new PDFPageProxy(\n          pageIndex,\n          pageInfo,\n          this,\n          this._params.pdfBug\n        );\n        this.#pageCache.set(pageIndex, page);\n        return page;\n      });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    if (\n      typeof ref !== \"object\" ||\n      ref === null ||\n      !Number.isInteger(ref.num) ||\n      ref.num < 0 ||\n      !Number.isInteger(ref.gen) ||\n      ref.gen < 0\n    ) {\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\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent,\n    });\n  }\n\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\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\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex,\n    });\n  }\n\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex,\n    });\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n\n  getOptionalContentConfig() {\n    return this.messageHandler\n      .sendWithPromise(\"GetOptionalContentConfig\", null)\n      .then(results => {\n        return new OptionalContentConfig(results);\n      });\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\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\n      .sendWithPromise(name, null)\n      .then(results => {\n        return {\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      });\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return; // No need to manually clean-up when destruction has started.\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\n        );\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(/* keepHCM = */ true);\n  }\n\n  get loadingParams() {\n    const { disableAutoFetch, enableXfa } = this._params;\n    return shadow(this, \"loadingParams\", {\n      disableAutoFetch,\n      enableXfa,\n    });\n  }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  /**\n   * Ensures there is an object defined for `objId`.\n   *\n   * @param {string} objId\n   * @returns {Object}\n   */\n  #ensureObj(objId) {\n    return (this.#objs[objId] ||= {\n      capability: new PromiseCapability(),\n      data: null,\n    });\n  }\n\n  /**\n   * If called *without* callback, this returns the data of `objId` but the\n   * object needs to be resolved. If it isn't, this method throws.\n   *\n   * If called *with* a callback, the callback is called with the data of the\n   * object once the object is resolved. That means, if you call this method\n   * and the object is already resolved, the callback gets called right away.\n   *\n   * @param {string} objId\n   * @param {function} [callback]\n   * @returns {any}\n   */\n  get(objId, callback = null) {\n    // If there is a callback, then the get can be async and the object is\n    // not required to be resolved right now.\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.capability.promise.then(() => callback(obj.data));\n      return null;\n    }\n    // If there isn't a callback, the user expects to get the resolved data\n    // directly.\n    const obj = this.#objs[objId];\n    // If there isn't an object yet or the object isn't resolved, then the\n    // data isn't ready yet!\n    if (!obj?.capability.settled) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  has(objId) {\n    const obj = this.#objs[objId];\n    return obj?.capability.settled ?? false;\n  }\n\n  /**\n   * Resolves the object `objId` with optional `data`.\n   *\n   * @param {string} objId\n   * @param {any} [data]\n   */\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.capability.resolve();\n  }\n\n  clear() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n      data?.bitmap?.close(); // Release any `ImageBitmap` data.\n    }\n    this.#objs = Object.create(null);\n  }\n\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const { capability, data } = this.#objs[objId];\n\n      if (!capability.settled) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n  #internalRenderTask = null;\n\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n\n    /**\n     * Callback for incremental rendering -- a function that will be called\n     * each time the rendering is paused.  To continue rendering call the\n     * function that is the first argument to the callback.\n     * @type {function}\n     */\n    this.onContinue = null;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getOperatorList\", {\n        value: () => {\n          return this.#internalRenderTask.operatorList;\n        },\n      });\n    }\n  }\n\n  /**\n   * Promise for rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n\n  /**\n   * Cancels the rendering task. If the task is currently rendering it will\n   * not be cancelled until graphics pauses with a timeout. The promise that\n   * this object extends will be rejected when cancelled.\n   *\n   * @param {number} [extraDelay]\n   */\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n  }\n\n  /**\n   * Whether form fields are rendered separately from the main operatorList.\n   * @type {boolean}\n   */\n  get separateAnnots() {\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const { annotationCanvasMap } = this.#internalRenderTask;\n    return (\n      separateAnnots.form ||\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n    );\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n  static #canvasInUse = new WeakSet();\n\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  }) {\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\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame =\n      useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = new PromiseCapability();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\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.canvasContext.canvas;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {\n      // Ignoring errors, since we only want to know when rendering is\n      // no longer pending.\n    });\n  }\n\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\n          \"Cannot use the same canvas during multiple render() operations. \" +\n            \"Use different canvas or ensure previous operations were \" +\n            \"cancelled or completed.\"\n        );\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\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 { canvasContext, viewport, transform, background } = this.params;\n\n    this.gfx = new CanvasGraphics(\n      canvasContext,\n      this.commonObjs,\n      this.objs,\n      this.canvasFactory,\n      this.filterFactory,\n      { optionalContentConfig },\n      this.annotationCanvasMap,\n      this.pageColors\n    );\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\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n    this.callback(\n      error ||\n        new RenderingCancelledException(\n          `Rendering cancelled, page ${this._pageIndex + 1}`,\n          extraDelay\n        )\n    );\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.stepper?.updateOperatorList(this.operatorList);\n\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\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\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      window.requestAnimationFrame(() => {\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(\n      this.operatorList,\n      this.operatorListIdx,\n      this._continueBound,\n      this.stepper\n    );\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\n        this.callback();\n      }\n    }\n  }\n}\n\n/** @type {string} */\nconst version =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n  build,\n  DefaultCanvasFactory,\n  DefaultCMapReaderFactory,\n  DefaultFilterFactory,\n  DefaultStandardFontDataFactory,\n  getDocument,\n  LoopbackPort,\n  PDFDataRangeTransport,\n  PDFDocumentLoadingTask,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  PDFWorker,\n  PDFWorkerUtil,\n  RenderTask,\n  version,\n};\n","/* Copyright 2015 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\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n  constructor() {\n    if (this.constructor === BaseFilterFactory) {\n      unreachable(\"Cannot initialize BaseFilterFactory.\");\n    }\n  }\n\n  addFilter(maps) {\n    return \"none\";\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n\n  addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n\n  destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n  constructor() {\n    if (this.constructor === BaseCanvasFactory) {\n      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n    }\n  }\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    };\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\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\n\nclass BaseCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = true }) {\n    if (this.constructor === BaseCMapReaderFactory) {\n      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({ name }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n      );\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    const compressionType = this.isCompressed\n      ? CMapCompressionType.BINARY\n      : CMapCompressionType.NONE;\n\n    return this._fetchData(url, compressionType).catch(reason => {\n      throw new Error(\n        `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n      );\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseStandardFontDataFactory {\n  constructor({ baseUrl = null }) {\n    if (this.constructor === BaseStandardFontDataFactory) {\n      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"standardFontDataUrl\" API parameter is provided.'\n      );\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetchData(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseSVGFactory {\n  constructor() {\n    if (this.constructor === BaseSVGFactory) {\n      unreachable(\"Cannot initialize BaseSVGFactory.\");\n    }\n  }\n\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\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n    return svg;\n  }\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\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\nexport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n};\n","/* Copyright 2014 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\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\",\n};\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}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (this.constructor === BaseShadingPattern) {\n      unreachable(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\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\n  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(\n        this._p0[0],\n        this._p0[1],\n        this._p1[0],\n        this._p1[1]\n      );\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(\n        this._p0[0],\n        this._p0[1],\n        this._r0,\n        this._p1[0],\n        this._p1[1],\n        this._r1\n      );\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\n        pathType,\n        getCurrentTransform(ctx)\n      ) || [0, 0, 0, 0];\n      // Create a canvas that is only as big as the current path. This doesn't\n      // allow us to cache the pattern, but it generally creates much smaller\n      // canvases and saves memory use. See bug 1722807 for an example.\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\n        \"pattern\",\n        width,\n        height,\n        true\n      );\n\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      // Non shading fill patterns are positioned relative to the base transform\n      // (usually the page's initial transform), but we may have created a\n      // smaller canvas based on the path, so we must account for the shift.\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [\n        1,\n        0,\n        0,\n        1,\n        ownerBBox[0],\n        ownerBBox[1],\n      ]);\n\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      // Shading fills are applied relative to the current matrix which is also\n      // how canvas gradients work, so there's no need to do anything special\n      // here.\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  // Very basic Gouraud-shaded triangle rasterization algorithm.\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\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\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}\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 \"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(\n            data,\n            context,\n            ps[q],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n          drawTriangle(\n            data,\n            context,\n            ps[q + verticesPerRow + 1],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q + verticesPerRow + 1],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(\n          data,\n          context,\n          ps[i],\n          ps[i + 1],\n          ps[i + 2],\n          cs[i],\n          cs[i + 1],\n          cs[i + 2]\n        );\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\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[7];\n    this._background = IR[8];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    const EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    const BORDER_SIZE = 2;\n\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\n    const width = Math.min(\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const height = Math.min(\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n\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\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n\n    const tmpCanvas = cachedCanvases.getCanvas(\n      \"mesh\",\n      paddedWidth,\n      paddedHeight,\n      false\n    );\n    const tmpCtx = tmpCanvas.context;\n\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\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n    if (pathType === PathType.SHADING) {\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n    } else {\n      // Obtain scale from matrix and current transformation matrix.\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n      if (this.matrix) {\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n\n    // Rasterizing on the main thread since sending/queue large canvases\n    // might cause OOM.\n    const temporaryPatternCanvas = this._createMeshCanvas(\n      scale,\n      pathType === PathType.SHADING ? null : this._background,\n      owner.cachedCanvases\n    );\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n\n    ctx.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\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}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2,\n};\n\nclass TilingPattern {\n  // 10in @ 300dpi shall be enough.\n  static MAX_PATTERN_SIZE = 3000;\n\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\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.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner) {\n    const operatorList = this.operatorList;\n    const bbox = this.bbox;\n    const xstep = this.xstep;\n    const ystep = this.ystep;\n    const paintType = this.paintType;\n    const tilingType = this.tilingType;\n    const color = this.color;\n    const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n    info(\"TilingType: \" + tilingType);\n\n    // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n    // described by bbox, and may repeat regularly by shifting the cell by\n    // xstep and ystep.\n    // Because the HTML5 canvas API does not support pattern repetition with\n    // gaps in between, we use the xstep/ystep instead of the bbox's size.\n    //\n    // This has the following consequences (similarly for ystep):\n    //\n    // - If xstep is the same as bbox, then there is no observable difference.\n    //\n    // - If xstep is larger than bbox, then the pattern canvas is partially\n    //   empty: the area bounded by bbox is painted, the outside area is void.\n    //\n    // - If xstep is smaller than bbox, then the pixels between xstep and the\n    //   bbox boundary will be missing. This is INCORRECT behavior.\n    //   \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n    //   but overlapping cells without common pixels are still valid.\n    //   TODO: Fix the implementation, to allow this scenario to be painted\n    //   correctly.\n\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n\n    // Obtain scale from matrix and current transformation matrix.\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(\n      this.baseTransform\n    );\n    const combinedScale = [\n      matrixScale[0] * curMatrixScale[0],\n      matrixScale[1] * curMatrixScale[1],\n    ];\n\n    // Use width and height values that are as close as possible to the end\n    // result when the pattern is used. Too low value makes the pattern look\n    // blurry. Too large value makes it look too crispy.\n    const dimx = this.getSizeAndScale(\n      xstep,\n      this.ctx.canvas.width,\n      combinedScale[0]\n    );\n    const dimy = this.getSizeAndScale(\n      ystep,\n      this.ctx.canvas.height,\n      combinedScale[1]\n    );\n\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\n      \"pattern\",\n      dimx.size,\n      dimy.size,\n      true\n    );\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n    let adjustedX0 = x0;\n    let adjustedY0 = y0;\n    let adjustedX1 = x1;\n    let adjustedY1 = y1;\n    // Some bounding boxes have negative x0/y0 coordinates which will cause the\n    // some of the drawing to be off of the canvas. To avoid this shift the\n    // bounding box over.\n    if (x0 < 0) {\n      adjustedX0 = 0;\n      adjustedX1 += Math.abs(x0);\n    }\n    if (y0 < 0) {\n      adjustedY0 = 0;\n      adjustedY1 += Math.abs(y0);\n    }\n    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n    // To match CanvasGraphics beginDrawing we must save the context here or\n    // else we end up with unbalanced save/restores.\n    tmpCtx.save();\n\n    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n    graphics.executeOperatorList(operatorList);\n\n    graphics.endDrawing();\n\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: adjustedX0,\n      offsetY: adjustedY0,\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    // xstep / ystep may be negative -- normalize.\n    step = Math.abs(step);\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    // Use the destination canvas's size if it is bigger than the hard-coded\n    // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n    // whole canvas.\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 { scale, 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    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\n      x0,\n      y0,\n      x1,\n      y1,\n    ]);\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        // Set color needed by image masks (fixes issues 3226 and 8741).\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\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\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n    let domMatrix = new DOMMatrix(matrix);\n    // Rescale and so that the ctx.createPattern call generates a pattern with\n    // the desired size.\n    domMatrix = domMatrix.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    domMatrix = domMatrix.scale(\n      1 / temporaryPatternCanvas.scaleX,\n      1 / temporaryPatternCanvas.scaleY\n    );\n\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n\n    return pattern;\n  }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 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\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [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\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 { srcPos, 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 len32 = src.length >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\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\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        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]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\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\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos, 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\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2012 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\nimport {\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  isNodeJS,\n  OPS,\n  shadow,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n  getShadingPattern,\n  PathType,\n  TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n *   the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n *   forwarded calls.\n */\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\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\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\n  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function ctxTransform(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\n  ctx.setTransform = function ctxSetTransform(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\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\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\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\n\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\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\n  delete(id) {\n    delete this.cache[id];\n  }\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}\n\nfunction drawImageAtIntegerCoords(\n  ctx,\n  srcImg,\n  srcX,\n  srcY,\n  srcW,\n  srcH,\n  destX,\n  destY,\n  destW,\n  destH\n) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    // top-left corner is at (X, Y) and\n    // bottom-right one is at (X + width, Y + height).\n\n    // If leftX is 4.321 then it's rounded to 4.\n    // If width is 10.432 then it's rounded to 11 because\n    // rightX = leftX + width = 14.753 which is rounded to 15\n    // so after rounding the total width is 11 (15 - 4).\n    // It's why we can't just floor/ceil uniformly, it just depends\n    // on the values we've.\n\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\n    // Some pdf contains images with 1x1 images so in case of 0-width after\n    // scaling we must fallback on 1 to be sure there is something.\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\n    // We must apply a transformation in order to apply it on the image itself.\n    // For example if a == 1 && d == -1, it means that the image itself is\n    // mirrored w.r.t. the x-axis.\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\n    return [rWidth, rHeight];\n  }\n\n  if (a === 0 && d === 0) {\n    // This path is taken in issue9462.pdf (page 3).\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\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\n    return [rHeight, rWidth];\n  }\n\n  // Not a scale matrix so let the render handle the case without rounding.\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n  const { width, height } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([\n    0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n  ]);\n\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\n\n  // decodes bit-packed mask data\n  const lineSize = (width + 7) & ~7;\n  let data = new Uint8Array(lineSize * height),\n    pos = 0;\n  for (const elem of imgData.data) {\n    let mask = 128;\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  // finding interesting points: every point is located between mask pixels,\n  // so there will be points of the (width + 1)x(height + 1) grid. Every point\n  // will have flags assigned based on neighboring mask pixels:\n  //   4 | 8\n  //   --P--\n  //   2 | 1\n  // We are interested only in points with the flags:\n  //   - outside corners: 1, 2, 4, 8;\n  //   - inside corners: 7, 11, 13, 14;\n  //   - and, intersections: 5, 10.\n  let count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    // 'sum' is the position of the current pixel configuration in the 'TYPES'\n    // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum =\n        (sum >> 2) +\n        (data[pos + 1] ? 4 : 0) +\n        (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n\n  // building outlines\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\n\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    path.moveTo(p % width1, i);\n\n    const p0 = p;\n    let type = points[p];\n    do {\n      const step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n\n      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        // set new direction\n        type = pp;\n        // delete mark\n        points[p] = 0;\n      } else {\n        // type is 5 or 10, ie, a crossing\n        // set new direction\n        type = pp & ((0x33 * type) >> 4);\n        // set new type for \"future hit\"\n        points[p] &= (type >> 2) | (type << 2);\n      }\n      path.lineTo(p % width1, (p / width1) | 0);\n\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n\n  // Immediately release the, potentially large, `Uint8Array`s after parsing.\n  data = null;\n  points = null;\n\n  const drawOutline = function (c) {\n    c.save();\n    // the path shall be painted in [0..1]x[0..1] space\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n\n  return drawOutline;\n}\n\nclass CanvasExtraState {\n  constructor(width, height) {\n    // Are soft masks and alpha values shapes or opacities?\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    // Current point (in user coordinates)\n    this.x = 0;\n    this.y = 0;\n    // Start of text line (in text coordinates)\n    this.lineX = 0;\n    this.lineY = 0;\n    // Character and word spacing\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    // Default fore and background colors\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    // Note: fill alpha applies to all non-stroking operations\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = \"none\";\n\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  updatePathMinMax(transform, x, y) {\n    [x, y] = Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n\n  updateRectMinMax(transform, rect) {\n    const p1 = Util.applyTransform(rect, transform);\n    const p2 = Util.applyTransform(rect.slice(2), transform);\n    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n\n    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n  }\n\n  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.maxX = Math.max(this.maxX, minMax[1]);\n    this.minY = Math.min(this.minY, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\n  }\n\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], box[0], box[2]);\n      minMax[1] = Math.max(minMax[1], box[0], box[2]);\n      minMax[2] = Math.min(minMax[2], box[1], box[3]);\n      minMax[3] = Math.max(minMax[3], box[1], box[3]);\n      return;\n    }\n    this.updateRectMinMax(transform, box);\n  }\n\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      // Stroked paths can be outside of the path bounding box by 1/2 the line\n      // width.\n      const scale = Util.singularValueDecompose2dScale(transform);\n      const xStrokePad = (scale[0] * this.lineWidth) / 2;\n      const yStrokePad = (scale[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\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  isEmptyClip() {\n    return this.minX === Infinity;\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(\n      this.clipBox,\n      this.getPathBoundingBox(pathType, transform)\n    );\n  }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  // Put the image data to the canvas in chunks, rather than putting the\n  // whole image at once.  This saves JS memory, because the ImageData object\n  // is smaller. It also possibly saves C++ memory within the implementation\n  // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n  // the data passed to putImageData()). |n| shouldn't be too small, however,\n  // because too many putImageData() calls will slow things down.\n  //\n  // Note: as written, if the last chunk is partial, the putImageData() call\n  // will (conceptually) put pixels past the bounds of the canvas.  But\n  // that's ok; any such pixels are ignored.\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\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\n  // There are multiple forms in which the pixel data can be passed, and\n  // imgData.kind tells us which one this is.\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n    // Grayscale, 1 bit per pixel (i.e. black-and-white).\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 = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\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\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      // We ran out of input. Make all remaining pixels transparent.\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n    // RGBA, 32-bits per pixel.\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\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\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\n    // RGB, 24-bits per pixel.\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\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\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    // The bitmap has been created in the worker.\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n\n  // Slow path: OffscreenCanvas isn't available in the worker.\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\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight =\n      i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n    // Expand the mask so it can be used by the canvas.  Any required\n    // inversion has already been handled.\n\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0,\n    }));\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\n    \"strokeStyle\",\n    \"fillStyle\",\n    \"fillRule\",\n    \"globalAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"globalCompositeOperation\",\n    \"font\",\n    \"filter\",\n  ];\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}\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  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    !isNodeJS\n  ) {\n    const { filter } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n  }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n  const length = bytes.length;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = bytes[i];\n    if (alpha === 0) {\n      bytes[i - 3] = r0;\n      bytes[i - 2] = g0;\n      bytes[i - 1] = b0;\n    } else if (alpha < 255) {\n      const alpha_ = 255 - alpha;\n      bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n      bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n      bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n    }\n  }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  const scale = 1 / 255;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n    layerData[i] = (layerData[i] * alpha * scale) | 0;\n  }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  for (let i = 3; i < length; i += 4) {\n    const y =\n      maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n      maskData[i - 2] * 152 + // * 0.59 ....\n      maskData[i - 1] * 28; // * 0.11 ....\n    layerData[i] = transferMap\n      ? (layerData[i] * transferMap[y >> 8]) >> 8\n      : (layerData[i] * y) >> 16;\n  }\n}\n\nfunction genericComposeSMask(\n  maskCtx,\n  layerCtx,\n  width,\n  height,\n  subtype,\n  backdrop,\n  transferMap,\n  layerOffsetX,\n  layerOffsetY,\n  maskOffsetX,\n  maskOffsetY\n) {\n  const hasBackdrop = !!backdrop;\n  const r0 = hasBackdrop ? backdrop[0] : 0;\n  const g0 = hasBackdrop ? backdrop[1] : 0;\n  const b0 = hasBackdrop ? backdrop[2] : 0;\n\n  const composeFn =\n    subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n\n  // processing image in chunks to save memory\n  const PIXELS_TO_PROCESS = 1048576;\n  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n  for (let row = 0; row < height; row += chunkSize) {\n    const chunkHeight = Math.min(chunkSize, height - row);\n    const maskData = maskCtx.getImageData(\n      layerOffsetX - maskOffsetX,\n      row + (layerOffsetY - maskOffsetY),\n      width,\n      chunkHeight\n    );\n    const layerData = layerCtx.getImageData(\n      layerOffsetX,\n      row + layerOffsetY,\n      width,\n      chunkHeight\n    );\n\n    if (hasBackdrop) {\n      composeSMaskBackdrop(maskData.data, r0, g0, b0);\n    }\n    composeFn(maskData.data, layerData.data, transferMap);\n\n    layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n  }\n}\n\nfunction 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  genericComposeSMask(\n    smask.context,\n    layerCtx,\n    layerWidth,\n    layerHeight,\n    smask.subtype,\n    smask.backdrop,\n    smask.transferMap,\n    layerOffsetX,\n    layerOffsetY,\n    smask.offsetX,\n    smask.offsetY\n  );\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\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  const scale = Util.singularValueDecompose2dScale(transform);\n  // Round to a 32bit float so that `<=` check below will pass for numbers that\n  // are very close, but not exactly the same 64bit floats.\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround(\n    (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n  );\n  if (interpolate !== undefined) {\n    // If the value is explicitly set use it.\n    return interpolate;\n  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n    // Smooth when downscaling.\n    return true;\n  }\n  // Don't smooth when upscaling.\n  return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n  constructor(\n    canvasCtx,\n    commonObjs,\n    objs,\n    canvasFactory,\n    filterFactory,\n    { optionalContentConfig, markedContentStack = null },\n    annotationCanvasMap,\n    pageColors\n  ) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\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.processingType3 = null;\n    // Patterns are painted relative to the initial page/form transform, see\n    // PDF spec 8.7.2 NOTE 1.\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\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\")\n        ? this.commonObjs.get(data)\n        : this.objs.get(data);\n    }\n    return fallback;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null,\n  }) {\n    // For pdfs that use blend modes we have to clear the canvas else certain\n    // blend modes can look wrong since we'd be blending with a white\n    // backdrop. The problem with a transparent backdrop though is we then\n    // don't get sub pixel anti aliasing on text, creating temporary\n    // transparent canvas when we have blend modes.\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n\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\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\n        \"transparent\",\n        width,\n        height\n      );\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      // The transform can be applied before rendering, transferring it to\n      // the new canvas.\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\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\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n\n  executeOperatorList(\n    operatorList,\n    executionStartIdx,\n    continueCallback,\n    stepper\n  ) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    // Sometimes the OperatorList to execute is empty.\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations =\n      argsArrayLen - i > EXECUTION_STEPS &&\n      typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      fnId = fnArray[i];\n\n      if (fnId !== OPS.dependency) {\n        // eslint-disable-next-line prefer-spread\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n          // If the promise isn't resolved yet, add the continueCallback\n          // to the promise and bail out.\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n\n      i++;\n\n      // If the entire operatorList was executed, stop as were done.\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      // If the execution took longer then a certain amount of time and\n      // `continueCallback` is specified, interrupt the execution.\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n\n      // If the operatorList isn't executed completely yet OR the execution\n      // time was short enough, do another execution round.\n    }\n  }\n\n  #restoreInitialState() {\n    // Finishing all opened operations such as SMask group painting.\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n\n  endDrawing() {\n    this.#restoreInitialState();\n\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (\n          typeof HTMLCanvasElement !== \"undefined\" &&\n          canvas instanceof HTMLCanvasElement\n        ) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(\n        this.pageColors.foreground,\n        this.pageColors.background\n      );\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\n  _scaleImage(img, inverseTransform) {\n    // Vertical or horizontal scaling shall not be more than 2 to not lose the\n    // pixels during drawImage operation, painting on the temporary canvas(es)\n    // that are twice smaller in size.\n    const width = img.width;\n    const height = img.height;\n    let widthScale = Math.max(\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\n      1\n    );\n    let heightScale = Math.max(\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\n      1\n    );\n\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (\n      (widthScale > 2 && paintWidth > 1) ||\n      (heightScale > 2 && paintHeight > 1)\n    ) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(paintWidth / 2);\n        newWidth =\n          paintWidth >= 16384\n            ? Math.floor(paintWidth / 2) - 1 || 1\n            : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        // TODO: see the comment above.\n        newHeight =\n          paintHeight >= 16384\n            ? Math.floor(paintHeight / 2) - 1 || 1\n            : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(\n        tmpCanvasId,\n        newWidth,\n        newHeight\n      );\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(\n        img,\n        0,\n        0,\n        paintWidth,\n        paintHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\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\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const { width, height } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      // We're reusing the same image several times, so we can cache it.\n      // In case we've a pattern fill we just keep the scaled version of\n      // the image.\n      // Only the scaling part matters, the translation part is just used\n      // to compute offsets (but not when filling patterns see #15573).\n      // TODO: handle the case of a pattern fill if it's possible.\n      cacheKey = JSON.stringify(\n        isPatternFill\n          ? currentTransform\n          : [currentTransform.slice(0, 4), fillColor]\n      );\n\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(\n          Math.min(currentTransform[0], currentTransform[2]) +\n            currentTransform[4]\n        );\n        const offsetY = Math.round(\n          Math.min(currentTransform[1], currentTransform[3]) +\n            currentTransform[5]\n        );\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY,\n        };\n      }\n      scaled = cachedImage;\n    }\n\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n\n    // Create the mask canvas at the size it will be drawn at and also set\n    // its transform to match the current transform so if there are any\n    // patterns applied they will be applied relative to the correct\n    // transform.\n\n    let maskToCanvas = Util.transform(currentTransform, [\n      1 / width,\n      0,\n      0,\n      -1 / height,\n      0,\n      0,\n    ]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n      [0, 0, width, height],\n      maskToCanvas\n    );\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\n      \"fillCanvas\",\n      drawnWidth,\n      drawnHeight\n    );\n    const fillCtx = fillCanvas.context;\n\n    // The offset will be the top-left cordinate mask.\n    // If objToCanvas is [a,b,c,d,e,f] then:\n    //   - offsetX = min(a, c) + e\n    //   - offsetY = min(b, d) + f\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n\n    if (!scaled) {\n      // Pre-scale if needed to improve image smoothing.\n      scaled = this._scaleImage(\n        maskCanvas.canvas,\n        getCurrentTransformInverse(fillCtx)\n      );\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(fillCtx),\n      img.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      fillCtx,\n      scaled,\n      0,\n      0,\n      scaled.width,\n      scaled.height,\n      0,\n      0,\n      width,\n      height\n    );\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n      1,\n      0,\n      0,\n      1,\n      -offsetX,\n      -offsetY,\n    ]);\n    fillCtx.fillStyle = isPatternFill\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n      : fillColor;\n\n    fillCtx.fillRect(0, 0, width, height);\n\n    if (cache && !isPatternFill) {\n      // The fill canvas is put in the cache associated to the mask image\n      // so we must remove from the cached canvas: it mustn't be used again.\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n\n    // Round the offsets to avoid drawing fractional pixels.\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY),\n    };\n  }\n\n  // Graphics state\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(intent) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setFlatness(flatness) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setGState(states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n        case \"CA\":\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.current.fillAlpha = value;\n          this.ctx.globalAlpha = value;\n          break;\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.ctx.filter = this.current.transferMaps =\n            this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\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    // Else, the state is okay and nothing needs to be done.\n  }\n\n  /**\n   * Soft mask mode takes the current main drawing canvas and replaces it with\n   * a temporary canvas. Any drawing operations that happen on the temporary\n   * canvas need to be composed with the main canvas that was suspended (see\n   * `compose()`). The temporary canvas also duplicates many of its operations\n   * on the suspended canvas to keep them in sync, so that when the soft mask\n   * mode ends any clipping paths or transformations will still be active and in\n   * the right order on the canvas' graphics state stack.\n   */\n  beginSMaskMode() {\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(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    // The soft mask is done, now restore the suspended canvas as the main\n    // drawing canvas.\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n\n    this.suspendedCtx = null;\n  }\n\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\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\n    composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    // Whatever was drawn has been moved to the suspended canvas, now clear it\n    // out of the current canvas.\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\n  save() {\n    if (this.inSMaskMode) {\n      // SMask mode may be turned on/off causing us to lose graphics state.\n      // Copy the temporary canvas state to the main(suspended) canvas to keep\n      // it in sync.\n      copyCtxState(this.ctx, this.suspendedCtx);\n      // Don't bother calling save on the temporary canvas since state is not\n      // saved there.\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n      if (this.inSMaskMode) {\n        // Graphics state is stored on the main(suspended) canvas. Restore its\n        // state then copy it over to the temporary canvas.\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n\n      // Ensure that the clipping path is reset (fixes issue6413.pdf).\n      this.pendingClip = null;\n\n      this._cachedScaleForStroking[0] = -1;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  // Path\n  constructPath(ops, args, minMax) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n      y = current.y;\n    let startX, startY;\n    const currentTransform = getCurrentTransform(ctx);\n\n    // Most of the time the current transform is a scaling matrix\n    // so we don't need to transform points before computing min/max:\n    // we can compute min/max first and then smartly \"apply\" the\n    // transform (see Util.scaleMinMax).\n    // For rectangle, moveTo and lineTo, min/max are computed in the\n    // worker (see evaluator.js).\n    const isScalingMatrix =\n      (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n      (currentTransform[1] === 0 && currentTransform[2] === 0);\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n          if (!isScalingMatrix) {\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n          }\n          ctx.closePath();\n          break;\n        case OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3]\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            minMaxForBezier\n          );\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n        case OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            x,\n            y,\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n\n    current.setCurrentPoint(x, y);\n  }\n\n  closePath() {\n    this.ctx.closePath();\n  }\n\n  stroke(consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    // For stroke we want to temporarily change the global alpha to the\n    // stroking alpha.\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(\n          ctx,\n          this,\n          getCurrentTransformInverse(ctx),\n          PathType.STROKE\n        );\n        this.rescaleAndStroke(/* saveRestore */ false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(/* saveRestore */ true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    // Restore the global alpha to the fill alpha\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n\n  fill(consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n\n    this.consumePath();\n  }\n\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n\n  endPath() {\n    this.consumePath();\n  }\n\n  // Clipping\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n\n  // Text\n  beginText() {\n    this.current.textMatrix = IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n\n    ctx.save();\n    ctx.beginPath();\n    for (const path of paths) {\n      ctx.setTransform(...path.transform);\n      ctx.translate(path.x, path.y);\n      path.addToPath(ctx, path.fontSize);\n    }\n    ctx.restore();\n    ctx.clip();\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n    // A valid matrix needs all main diagonal elements to be non-zero\n    // This also ensures we bypass FF bugzilla bug #719844.\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n    // and in some docs this can be negative (inverted x-y axes).\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return; // we don't need ctx.font for Type3 fonts\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface =\n      fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\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\n    // Some font backends cannot handle fonts below certain size.\n    // Keeping the font at minimal size and using the fontSizeScale to change\n    // the current transformation matrix before the fillText/strokeText.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\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\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n\n  paintChar(character, x, y, patternTransform) {\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 =\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n    );\n    const patternFill = current.patternFill && !font.missingFile;\n\n    let addToPath;\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\n      addToPath = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (font.disableFontFace || patternFill) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.beginPath();\n      addToPath(ctx, fontSize);\n      if (patternTransform) {\n        ctx.setTransform(...patternTransform);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fill();\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.stroke();\n      }\n      ctx.restore();\n    } else {\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fillText(character, x, y);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = (this.pendingTextPaths ||= []);\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        addToPath,\n      });\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    // Checks if anti-aliasing is enabled when scaled text is painted.\n    // On Windows GDI scaled fonts looks bad.\n    const { context: ctx } = this.cachedCanvases.getCanvas(\n      \"isFontSubpixelAAEnabled\",\n      10,\n      10\n    );\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\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\n    }\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\n    const simpleFillText =\n      current.textRenderingMode === TextRenderingMode.FILL &&\n      !font.disableFontFace &&\n      !current.patternFill;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n\n    let patternTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      patternTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode =\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n\n    ctx.lineWidth = lineWidth;\n\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      ctx.fillText(chars.join(\"\"), 0, 0);\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n\n      return undefined;\n    }\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\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 =\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n\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\n      if (font.remeasure && width > 0) {\n        // Some standard fonts may not have the exact width: rescale per\n        // character if measured width is greater than expected glyph width\n        // and subpixel-aa is enabled, otherwise just center the glyph.\n        const measuredWidth =\n          ((ctx.measureText(character).width * 1000) / fontSize) *\n          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 +=\n            (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n        }\n      }\n\n      // Only attempt to draw the glyph if it is actually in the embedded font\n      // file or if there isn't a font file so the fallback font is shown.\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          // common case\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternTransform);\n          if (accent) {\n            const scaledAccentX =\n              scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n            const scaledAccentY =\n              scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n            this.paintChar(\n              accent.fontChar,\n              scaledAccentX,\n              scaledAccentY,\n              patternTransform\n            );\n          }\n        }\n      }\n\n      const charWidth = vertical\n        ? width * widthAdvanceScale - spacing * fontDirection\n        : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n\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\n    return undefined;\n  }\n\n  showType3Text(glyphs) {\n    // Type3 fonts - each glyph is a \"mini-PDF\"\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 =\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y);\n\n    ctx.scale(textHScale, fontDirection);\n\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\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        continue;\n      }\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n\n  // Type3 fonts\n  setCharWidth(xWidth, yWidth) {\n    // We can safely ignore this since the width should be the same\n    // as the width in the Widths array.\n  }\n\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip();\n    this.endPath();\n  }\n\n  // Color\n  getColorN_Pattern(IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => {\n          return new CanvasGraphics(\n            ctx,\n            this.commonObjs,\n            this.objs,\n            this.canvasFactory,\n            this.filterFactory,\n            {\n              optionalContentConfig: this.optionalContentConfig,\n              markedContentStack: this.markedContentStack,\n            }\n          );\n        },\n      };\n      pattern = new TilingPattern(\n        IR,\n        color,\n        this.ctx,\n        canvasGraphicsFactory,\n        baseTransform\n      );\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n  }\n\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(r, g, b) {\n    const color = Util.makeHexColor(r, g, b);\n    this.ctx.strokeStyle = color;\n    this.current.strokeColor = color;\n  }\n\n  setFillRGBColor(r, g, b) {\n    const color = Util.makeHexColor(r, g, b);\n    this.ctx.fillStyle = color;\n    this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  _getPattern(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(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(\n      ctx,\n      this,\n      getCurrentTransformInverse(ctx),\n      PathType.SHADING\n    );\n\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const { width, height } = ctx.canvas;\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n        [0, 0, width, height],\n        inv\n      );\n\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      // HACK to draw the gradient onto an infinite rectangle.\n      // PDF gradients are drawn across the entire image while\n      // Canvas only allows gradients to be drawn in a rectangle\n      // The following bug should allow us to remove this.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n\n  // Images\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (Array.isArray(matrix) && matrix.length === 6) {\n      this.transform(...matrix);\n    }\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n      this.clip();\n      this.endPath();\n    }\n  }\n\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save();\n    // If there's an active soft mask we don't want it enabled for the group, so\n    // clear it out. The mask and suspended canvas will be restored in endGroup.\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n    // TODO non-isolated groups - according to Rik at adobe non-isolated\n    // group results aren't usually that different and they even have tools\n    // that ignore this setting. Notes from Rik on implementing:\n    // - When you encounter an transparency group, create a new canvas with\n    // the dimensions of the bbox\n    // - copy the content from the previous canvas to the new canvas\n    // - draw as usual\n    // - remove the backdrop alpha:\n    // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n    // value of your transparency group and 'alphaBackdrop' the alpha of the\n    // backdrop\n    // - remove background color:\n    // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n\n    // TODO knockout - supposedly possible with the clever use of compositing\n    // modes.\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\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\n    // Based on the current transform figure out how big the bounding box\n    // will actually be.\n    let bounds = Util.getAxialAlignedBoundingBox(\n      group.bbox,\n      getCurrentTransform(currentCtx)\n    );\n    // Clip the bounding box to the current canvas.\n    const canvasBounds = [\n      0,\n      0,\n      currentCtx.canvas.width,\n      currentCtx.canvas.height,\n    ];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    // Use ceil in case we're between sizes so we don't create canvas that is\n    // too small and make the canvas at least 1x1 pixels.\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    let scaleX = 1,\n      scaleY = 1;\n    if (drawnWidth > MAX_GROUP_SIZE) {\n      scaleX = drawnWidth / MAX_GROUP_SIZE;\n      drawnWidth = MAX_GROUP_SIZE;\n    }\n    if (drawnHeight > MAX_GROUP_SIZE) {\n      scaleY = drawnHeight / MAX_GROUP_SIZE;\n      drawnHeight = MAX_GROUP_SIZE;\n    }\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      // Using two cache entries is case if masks are used one after another.\n      cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    const groupCtx = scratchCanvas.context;\n\n    // Since we created a new canvas that is just the size of the bounding box\n    // we have to translate the group ctx.\n    groupCtx.scale(1 / scaleX, 1 / scaleY);\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n\n    if (group.smask) {\n      // Saving state and cached mask to be used in setGState.\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        scaleX,\n        scaleY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null, // used during suspend operation\n      });\n    } else {\n      // Setup the current ctx so when the group is popped we draw it at the\n      // right location.\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.scale(scaleX, scaleY);\n      currentCtx.save();\n    }\n    // The transparency group inherits all off the current graphics state\n    // except the blend mode, soft mask, and alpha constants.\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(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    // Turn off image smoothing to avoid sub pixel interpolation which can\n    // look kind of blurry for some pdfs.\n    this.ctx.imageSmoothingEnabled = false;\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = Util.getAxialAlignedBoundingBox(\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n        currentMtx\n      );\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    // The annotations are drawn just after the page content.\n    // The page content drawing can potentially have set a transform,\n    // a clipping path, whatever...\n    // So in order to have something clean, we restore the initial state.\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n\n    this.ctx.save();\n    this.save();\n\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n\n    if (Array.isArray(rect) && rect.length === 4) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n          getCurrentTransform(this.ctx)\n        );\n        const { viewportScale } = this;\n        const canvasWidth = Math.ceil(\n          width * this.outputScaleX * viewportScale\n        );\n        const canvasHeight = Math.ceil(\n          height * this.outputScaleY * viewportScale\n        );\n\n        this.annotationCanvas = this.canvasFactory.create(\n          canvasWidth,\n          canvasHeight\n        );\n        const { canvas, context } = 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(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.endPath();\n      }\n    }\n\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const count = img.count;\n    img = this.getObject(img.data, img);\n    img.count = count;\n\n    const ctx = this.ctx;\n    const glyph = this.processingType3;\n\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\n      }\n\n      if (glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n    }\n    const mask = this._createMaskCanvas(img);\n    const maskCanvas = mask.canvas;\n\n    ctx.save();\n    // The mask is drawn with the transform applied. Reset the current\n    // transform to draw to the identity.\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(\n    img,\n    scaleX,\n    skewX = 0,\n    skewY = 0,\n    scaleY,\n    positions\n  ) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    img = this.getObject(img.data, img);\n\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(img);\n\n    ctx.setTransform(\n      1,\n      0,\n      0,\n      1,\n      mask.offsetX - currentTransform[4],\n      mask.offsetY - currentTransform[5]\n    );\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [\n        scaleX,\n        skewX,\n        skewY,\n        scaleY,\n        positions[i],\n        positions[i + 1],\n      ]);\n\n      const [x, y] = Util.applyTransform([0, 0], trans);\n      ctx.drawImage(mask.canvas, x, y);\n    }\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    for (const image of images) {\n      const { data, width, height, transform } = image;\n\n      const maskCanvas = this.cachedCanvases.getCanvas(\n        \"maskCanvas\",\n        width,\n        height\n      );\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = \"source-in\";\n\n      maskCtx.fillStyle = isPatternFill\n        ? fillColor.getPattern(\n            maskCtx,\n            this,\n            getCurrentTransformInverse(ctx),\n            PathType.FILL\n          )\n        : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        maskCanvas.canvas,\n        0,\n        0,\n        width,\n        height,\n        0,\n        -1,\n        1,\n        1\n      );\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(imgData);\n  }\n\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\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(imgData, map);\n  }\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\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const { bitmap, width, height } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\n      \"inlineImage\",\n      width,\n      height\n    );\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n\n    return tmpCanvas.canvas;\n  }\n\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n\n    this.save();\n\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      !isNodeJS\n    ) {\n      // The filter, if any, will be applied in applyTransferMapsToBitmap.\n      // It must be applied to the image before rescaling else some artifacts\n      // could appear.\n      // The final restore will reset it to its value.\n      const { filter } = ctx;\n      if (filter !== \"none\" && filter !== \"\") {\n        ctx.filter = \"none\";\n      }\n    }\n\n    // scale the image to the unit square\n    ctx.scale(1 / width, -1 / height);\n\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (\n      (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n      !imgData.data\n    ) {\n      // typeof check is needed due to node.js support, see issue #8489\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\n        \"inlineImage\",\n        width,\n        height\n      );\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    const scaled = this._scaleImage(\n      imgToPaint,\n      getCurrentTransformInverse(ctx)\n    );\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(ctx),\n      imgData.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      ctx,\n      scaled.img,\n      0,\n      0,\n      scaled.paintWidth,\n      scaled.paintHeight,\n      0,\n      -height,\n      width,\n      height\n    );\n    this.compose();\n    this.restore();\n  }\n\n  paintInlineImageXObjectGroup(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\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\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        imgToPaint,\n        entry.x,\n        entry.y,\n        entry.w,\n        entry.h,\n        0,\n        -1,\n        1,\n        1\n      );\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  // Marked content\n\n  markPoint(tag) {\n    // TODO Marked content.\n  }\n\n  markPointProps(tag, properties) {\n    // TODO Marked content.\n  }\n\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true,\n    });\n  }\n\n  beginMarkedContentProps(tag, properties) {\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\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  // Compatibility\n\n  beginCompat() {\n    // TODO ignore undefined operators (should we do that anyway?)\n  }\n\n  endCompat() {\n    // TODO stop ignoring undefined operators\n  }\n\n  // Helper functions\n\n  consumePath(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(\"evenodd\");\n        } else {\n          ctx.clip();\n        }\n      }\n      this.pendingClip = null;\n    }\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        this._cachedGetSinglePixelWidth =\n          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\n  getScaleForStroking() {\n    // A pixel has thicknessX = thicknessY = 1;\n    // A transformed pixel is a parallelogram and the thicknesses\n    // corresponds to the heights.\n    // The goal of this function is to rescale before setting the\n    // lineWidth in order to have both thicknesses greater or equal\n    // to 1 after transform.\n    if (this._cachedScaleForStroking[0] === -1) {\n      const { lineWidth } = this.current;\n      const { a, b, c, d } = this.ctx.getTransform();\n      let scaleX, scaleY;\n\n      if (b === 0 && c === 0) {\n        // Fast path\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        // A pixel (base (x, y)) is transformed by M into a parallelogram:\n        //  - its area is |det(M)|;\n        //  - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n        //  - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n        // heightX and heightY are the thicknesses of the transformed pixel\n        // and they must be both greater or equal to 1.\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\n  // Rescale before stroking in order to have a final lineWidth\n  // with both thicknesses greater or equal to 1.\n  rescaleAndStroke(saveRestore) {\n    const { ctx } = this;\n    const { lineWidth } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n\n    ctx.lineWidth = lineWidth || 1;\n\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n\n    ctx.scale(scaleX, scaleY);\n\n    // How the dashed line is rendered depends on the current transform...\n    // so we added a rescale to handle too thin lines and consequently\n    // the way the line is dashed will be modified.\n    // If scaleX === scaleY, the dashed lines will be rendered correctly\n    // else we'll have some bugs (but only with too thin lines).\n    // Here we take the max... why not taking the min... or something else.\n    // Anyway, as said it's buggy when scaleX !== scaleY.\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\n    ctx.stroke();\n\n    if (saveRestore) {\n      ctx.restore();\n    }\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}\n\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2015 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\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n  BaseException,\n  FeatureTest,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n\n  static PDF = 72.0;\n\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n  #_cache;\n\n  #_defs;\n\n  #docId;\n\n  #document;\n\n  #hcmFilter;\n\n  #hcmKey;\n\n  #hcmUrl;\n\n  #hcmHighlightFilter;\n\n  #hcmHighlightKey;\n\n  #hcmHighlightUrl;\n\n  #id = 0;\n\n  constructor({ docId, ownerDocument = globalThis.document } = {}) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n\n  get #cache() {\n    return (this.#_cache ||= new Map());\n  }\n\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const { style } = 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\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\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n\n    let tableR, tableG, tableB, key;\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      key = tableR = tableG = tableB = buffer.join(\",\");\n    } else {\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      tableR = bufferR.join(\",\");\n      tableG = bufferG.join(\",\");\n      tableB = bufferB.join(\",\");\n      key = `${tableR}${tableG}${tableB}`;\n    }\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n\n    // We create a SVG filter: feComponentTransferElement\n    //  https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = `url(#${id})`;\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n    return url;\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    if (this.#hcmKey === key) {\n      return this.#hcmUrl;\n    }\n\n    this.#hcmKey = key;\n    this.#hcmUrl = \"none\";\n    this.#hcmFilter?.remove();\n\n    if (!fgColor || !bgColor) {\n      return this.#hcmUrl;\n    }\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\n    if (\n      (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n      fgColor === bgColor\n    ) {\n      return this.#hcmUrl;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n    //\n    // Relative luminance:\n    // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n    //\n    // We compute the rounded luminance of the default background color.\n    // Then for every color in the pdf, if its rounded luminance is the\n    // same as the background one then it's replaced by the new\n    // background color else by the foreground one.\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\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n\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(\n      getSteps(0, 5),\n      getSteps(1, 5),\n      getSteps(2, 5),\n      filter\n    );\n\n    this.#hcmUrl = `url(#${id})`;\n    return this.#hcmUrl;\n  }\n\n  addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    if (this.#hcmHighlightKey === key) {\n      return this.#hcmHighlightUrl;\n    }\n\n    this.#hcmHighlightKey = key;\n    this.#hcmHighlightUrl = \"none\";\n    this.#hcmHighlightFilter?.remove();\n\n    if (!fgColor || !bgColor) {\n      return this.#hcmHighlightUrl;\n    }\n\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n    );\n    let bgGray = Math.round(\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n    );\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n      this.#getRGB.bind(this)\n    );\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\n        bgGray,\n        fgGray,\n        newBgRGB,\n        newFgRGB,\n      ];\n    }\n    this.#defs.style.color = \"\";\n\n    // Now we can create the filters to highlight some canvas parts.\n    // The colors in the pdf will almost be Canvas and CanvasText, hence we\n    // want to filter them to finally get Highlight and HighlightText.\n    // Since we're in HCM the background color and the foreground color should\n    // be really different when converted to grayscale (if they're not then it\n    // means that we've a poor contrast). Once the canvas colors are converted\n    // to grayscale we can easily map them on their new colors.\n    // The grayscale step is important because if we've something like:\n    //   fgColor = #FF....\n    //   bgColor = #FF....\n    //   then we are enable to map the red component on the new red components\n    //   which can be different.\n\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\n    const id = `g_${this.#docId}_hcm_highlight_filter`;\n    const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\n      filter\n    );\n\n    this.#hcmHighlightUrl = `url(#${id})`;\n    return this.#hcmHighlightUrl;\n  }\n\n  destroy(keepHCM = false) {\n    if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {\n      return;\n    }\n    if (this.#_defs) {\n      this.#_defs.parentNode.parentNode.remove();\n      this.#_defs = null;\n    }\n    if (this.#_cache) {\n      this.#_cache.clear();\n      this.#_cache = null;\n    }\n    this.#id = 0;\n  }\n\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"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    );\n    filter.append(feColorMatrix);\n  }\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\n    return filter;\n  }\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\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({ ownerDocument = globalThis.document } = {}) {\n    super();\n    this._document = ownerDocument;\n  }\n\n  /**\n   * @ignore\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\nasync function fetchData(url, type = \"text\") {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    isValidFetchUrl(url, document.baseURI)\n  ) {\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\n  // The Fetch API is not supported.\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, /* async = */ true);\n    request.responseType = type;\n\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        let data;\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            data = request.response;\n            break;\n          default:\n            data = request.responseText;\n            break;\n        }\n        if (data) {\n          resolve(data);\n          return;\n        }\n      }\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(\n      url,\n      /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n    ).then(data => {\n      return {\n        cMapData:\n          data instanceof ArrayBuffer\n            ? new Uint8Array(data)\n            : stringToBytes(data),\n        compressionType,\n      };\n    });\n  }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url, /* type = */ \"arraybuffer\").then(data => {\n      return new Uint8Array(data);\n    });\n  }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n *   yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n *   default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n *   default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n *   viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n *   in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({\n    viewBox,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    // Normalize the rotation, by clamping it to the [0, 360) range.\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(\n          \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n        );\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\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    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * The original, un-scaled, viewport dimensions.\n   * @type {Object}\n   */\n  get rawDims() {\n    const { viewBox } = this;\n    return shadow(this, \"rawDims\", {\n      pageWidth: viewBox[2] - viewBox[0],\n      pageHeight: viewBox[3] - viewBox[1],\n      pageX: viewBox[0],\n      pageY: viewBox[1],\n    });\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} [params]\n   * @returns {PageViewport} Cloned viewport.\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      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @returns {Array} Array containing corresponding coordinates of the\n   *   rectangle in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\n\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\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}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n  if (!onlyStripPath) {\n    [url] = url.split(/[#?]/, 1);\n  }\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n *   unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\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 reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  //              SCHEME        HOST        1.PATH  2.QUERY   3.REF\n  // Pattern to get last matching NAME.pdf\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename =\n    reFilename.exec(splitURI[1]) ||\n    reFilename.exec(splitURI[2]) ||\n    reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n      try {\n        suggestedFilename = reFilename.exec(\n          decodeURIComponent(suggestedFilename)\n        )[0];\n      } catch {\n        // Possible (extremely rare) errors:\n        // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n        // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n      }\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n  started = Object.create(null);\n\n  times = [];\n\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\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    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    // Find the longest name for padding purposes.\n    const outBuf = [];\n    let longest = 0;\n    for (const { name } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const { name, start, end } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    throw new Error(\"Not implemented: isValidFetchUrl\");\n  }\n  try {\n    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    // The Fetch API only supports the http/https protocols, and not file/ftp.\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch {\n    return false; // `new URL()` will throw on incorrect data.\n  }\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n  /**\n   * Convert a PDF date string to a JavaScript `Date` object.\n   *\n   * The PDF date string format is described in section 7.9.4 of the official\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n   * edition) Adobe describes the same format including a trailing apostrophe.\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\n   *\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n   * parts of the date string).\n   *\n   * @param {string} input\n   * @returns {Date|null}\n   */\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    // Lazily initialize the regular expression.\n    pdfDateStringRegex ||= new RegExp(\n      \"^D:\" + // Prefix (required)\n        \"(\\\\d{4})\" + // Year (required)\n        \"(\\\\d{2})?\" + // Month (optional)\n        \"(\\\\d{2})?\" + // Day (optional)\n        \"(\\\\d{2})?\" + // Hour (optional)\n        \"(\\\\d{2})?\" + // Minute (optional)\n        \"(\\\\d{2})?\" + // Second (optional)\n        \"([Z|+|-])?\" + // Universal time relation (optional)\n        \"(\\\\d{2})?\" + // Offset hour (optional)\n        \"'?\" + // Splitting apostrophe (optional)\n        \"(\\\\d{2})?\" + // Offset minute (optional)\n        \"'?\" // Trailing apostrophe (optional)\n    );\n\n    // Optional fields that don't satisfy the requirements from the regular\n    // expression (such as incorrect digit counts or numbers that are out of\n    // range) will fall back the defaults from the specification.\n    const matches = pdfDateStringRegex.exec(input);\n    if (!matches) {\n      return null;\n    }\n\n    // JavaScript's `Date` object expects the month to be between 0 and 11\n    // instead of 1 and 12, so we have to correct for that.\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\n    // Universal time relation 'Z' means that the local time is equal to the\n    // universal time, whereas the relations '+'/'-' indicate that the local\n    // time is later respectively earlier than the universal time. Every date\n    // is normalized to universal time.\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n  const { width, height } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n  return new PageViewport({\n    viewBox,\n    scale,\n    rotation,\n  });\n}\n\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [\n      (colorRGB & 0xff0000) >> 16,\n      (colorRGB & 0x00ff00) >> 8,\n      colorRGB & 0x0000ff,\n    ];\n  }\n\n  if (color.startsWith(\"rgb(\")) {\n    // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n    return color\n      .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x));\n  }\n\n  if (color.startsWith(\"rgba(\")) {\n    return color\n      .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x))\n      .slice(0, 3);\n  }\n\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\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}\n\nfunction getCurrentTransform(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n  div,\n  viewport,\n  mustFlip = false,\n  mustRotate = true\n) {\n  if (viewport instanceof PageViewport) {\n    const { pageWidth, pageHeight } = viewport.rawDims;\n    const { style } = div;\n    const useRound = FeatureTest.isCSSRoundSupported;\n\n    const w = `var(--scale-factor) * ${pageWidth}px`,\n      h = `var(--scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n      heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n\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\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\n\nexport {\n  deprecated,\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMFilterFactory,\n  DOMStandardFontDataFactory,\n  DOMSVGFactory,\n  fetchData,\n  getColorValues,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  isValidFetchUrl,\n  noContextMenu,\n  PageViewport,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  setLayerDimensions,\n  StatTimer,\n};\n","/* Copyright 2023 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\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n  #parent = null;\n\n  #id = 0;\n\n  #mapping = new Map();\n\n  constructor({ pageIndex }) {\n    this.pageIndex = pageIndex;\n  }\n\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\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\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n\n  static #setBox(element, { x, y, width, height }) {\n    const { style } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n\n  #createSVG(box) {\n    const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true);\n    this.#parent.append(svg);\n    DrawLayer.#setBox(svg, box);\n\n    return svg;\n  }\n\n  highlight({ outlines, box }, color, opacity) {\n    const id = this.#id++;\n    const root = this.#createSVG(box);\n    root.classList.add(\"highlight\");\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(\n      \"d\",\n      DrawLayer.#extractPathFromHighlightOutlines(outlines)\n    );\n\n    // Create the clipping path for the editor div.\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\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    root.setAttribute(\"fill\", color);\n    root.setAttribute(\"fill-opacity\", opacity);\n    use.setAttribute(\"href\", `#${pathId}`);\n\n    this.#mapping.set(id, root);\n\n    return { id, clipPathId: `url(#${clipPathId})` };\n  }\n\n  highlightOutline({ outlines, box }) {\n    // We cannot draw the outline directly in the SVG for highlights because\n    // it composes with its parent with mix-blend-mode: multiply.\n    // But the outline has a different mix-blend-mode, so we need to draw it in\n    // its own SVG.\n    const id = this.#id++;\n    const root = this.#createSVG(box);\n    root.classList.add(\"highlightOutline\");\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(\n      \"d\",\n      DrawLayer.#extractPathFromHighlightOutlines(outlines)\n    );\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n\n    this.#mapping.set(id, root);\n\n    return id;\n  }\n\n  static #extractPathFromHighlightOutlines(polygons) {\n    const buffer = [];\n    for (const polygon of polygons) {\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\n  updateBox(id, box) {\n    DrawLayer.#setBox(this.#mapping.get(id), box);\n  }\n\n  rotate(id, angle) {\n    this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n  }\n\n  changeColor(id, color) {\n    this.#mapping.get(id).setAttribute(\"fill\", color);\n  }\n\n  changeOpacity(id, opacity) {\n    this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n  }\n\n  addClass(id, className) {\n    this.#mapping.get(id).classList.add(className);\n  }\n\n  removeClass(id, className) {\n    this.#mapping.get(id).classList.remove(className);\n  }\n\n  remove(id) {\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n  }\n}\n\nexport { DrawLayer };\n","/* Copyright 2022 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  assert,\n  LINE_FACTOR,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  KeyboardManager,\n} from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n  #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n  #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n  #boundEditorDivInput = this.editorDivInput.bind(this);\n\n  #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n  #color;\n\n  #content = \"\";\n\n  #editorDivId = `${this.id}-editor`;\n\n  #fontSize;\n\n  #initialData = null;\n\n  static _freeTextDefaultContent = \"\";\n\n  static _internalPadding = 0;\n\n  static _defaultColor = null;\n\n  static _defaultFontSize = 10;\n\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n\n    const arrowChecker = self => self.isEmpty();\n\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          // Commit the text in case the user use ctrl+s to save the document.\n          // The event must bubble in order to be caught by the viewer.\n          // See bug 1831574.\n          [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n          proto.commitOrRemove,\n          { bubbles: true },\n        ],\n        [\n          [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n          proto.commitOrRemove,\n        ],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  static _type = \"freetext\";\n\n  static _editorType = AnnotationEditorType.FREETEXT;\n\n  constructor(params) {\n    super({ ...params, name: \"freeTextEditor\" });\n    this.#color =\n      params.color ||\n      FreeTextEditor._defaultColor ||\n      AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n, {\n      strings: [\"pdfjs-free-text-default-content\"],\n    });\n    const style = getComputedStyle(document.documentElement);\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      const lineHeight = parseFloat(\n        style.getPropertyValue(\"--freetext-line-height\")\n      );\n      assert(\n        lineHeight === LINE_FACTOR,\n        \"Update the CSS variable to agree with the constant.\"\n      );\n    }\n\n    this._internalPadding = parseFloat(\n      style.getPropertyValue(\"--freetext-padding\")\n    );\n  }\n\n  /** @inheritdoc */\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\n  /** @inheritdoc */\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\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.FREETEXT_SIZE,\n        FreeTextEditor._defaultFontSize,\n      ],\n      [\n        AnnotationEditorParamsType.FREETEXT_COLOR,\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n    ];\n  }\n\n  /**\n   * Update the font size and make this action as undoable.\n   * @param {number} fontSize\n   */\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--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: () => {\n        setFontsize(fontSize);\n      },\n      undo: () => {\n        setFontsize(savedFontsize);\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.#color;\n    this.addCommands({\n      cmd: () => {\n        this.#color = this.editorDiv.style.color = color;\n      },\n      undo: () => {\n        this.#color = this.editorDiv.style.color = savedColor;\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Helper to translate the editor with the keyboard when it's empty.\n   * @param {number} x in page units.\n   * @param {number} y in page units.\n   */\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n  }\n\n  /** @inheritdoc */\n  getInitialTranslation() {\n    // The start of the base line is where the user clicked.\n    const scale = this.parentScale;\n    return [\n      -FreeTextEditor._internalPadding * scale,\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n    ];\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(false);\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n    super.enableEditMode();\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n    this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n    this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(true);\n    super.disableEditMode();\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.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n    this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n\n    // On Chrome, the focus is given to <body> when contentEditable is set to\n    // false, hence we focus the div.\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n\n    // In case the blur callback hasn't been called.\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n  }\n\n  /** @inheritdoc */\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\n  /** @inheritdoc */\n  onceAdded() {\n    if (this.width) {\n      this.#cheatInitialRect();\n      // The editor was created in using ctrl+c.\n      return;\n    }\n    this.enableEditMode();\n    this.editorDiv.focus();\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n\n  /** @inheritdoc */\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\n  /**\n   * Extract the text from this editor.\n   * @returns {string}\n   */\n  #extractText() {\n    const divs = this.editorDiv.getElementsByTagName(\"div\");\n    if (divs.length === 0) {\n      return this.editorDiv.innerText;\n    }\n    const buffer = [];\n    for (const div of divs) {\n      buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n    }\n    return buffer.join(\"\\n\");\n  }\n\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      // This editor isn't on screen but we need to get its dimensions, so\n      // we just insert it in the DOM, get its bounding box and then remove it.\n      const { currentLayer, div } = this;\n      const savedDisplay = div.style.display;\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n    }\n\n    // The dimensions are relative to the rotation of the page, hence we need to\n    // take that into account (see issue #16636).\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\n  /**\n   * Commit the content we have in this editor.\n   * @returns {undefined}\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\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\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\n  /** @inheritdoc */\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n\n  /** @inheritdoc */\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /**\n   * ondblclick callback.\n   * @param {MouseEvent} event\n   */\n  dblclick(event) {\n    this.enterInEditMode();\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      // Avoid to add an unwanted new line.\n      event.preventDefault();\n    }\n  }\n\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n    this.enableEditing();\n\n    AnnotationEditor._l10nPromise\n      .get(\"pdfjs-free-text-default-content\")\n      .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n    this.editorDiv.contentEditable = true;\n\n    const { style } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n\n    this.div.append(this.editorDiv);\n\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n\n    // TODO: implement paste callback.\n    // The goal is to sanitize and have something suitable for this\n    // editor.\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        // This stuff is hard to test: if something is changed here, please\n        // test with the following PDF file:\n        //  - freetexts.pdf\n        //  - rotated_freetexts.pdf\n        // Only small variations between the original annotation and its editor\n        // are allowed.\n\n        // position is the position of the first glyph in the annotation\n        // and it's relative to its container.\n        const { position } = 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 =\n              baseX +\n              (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY =\n              baseY +\n              (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.setAt(\n          baseX * parentWidth,\n          baseY * parentHeight,\n          this.width * parentWidth,\n          this.height * parentHeight\n        );\n      }\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\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n    }\n\n    return this.div;\n  }\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(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      this.editorDiv.append(div);\n    }\n  }\n\n  /** @inheritdoc */\n  get contentDiv() {\n    return this.editorDiv;\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: { fontSize, fontColor },\n          rect,\n          rotation,\n          id,\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      // textContent is supposed to be an array of strings containing each line\n      // of text. However, it can be null or empty.\n      if (!textContent || textContent.length === 0) {\n        // Empty annotation.\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,\n        rotation,\n        id,\n        deleted: false,\n      };\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = data.value;\n    editor.annotationElementId = data.id || null;\n    editor.#initialData = initialData;\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return {\n        pageIndex: this.pageIndex,\n        id: this.annotationElementId,\n        deleted: true,\n      };\n    }\n\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    const rect = this.getRect(padding, padding);\n    const color = AnnotationEditor._colorManager.convert(\n      this.isAttachedToDOM\n        ? getComputedStyle(this.editorDiv).color\n        : this.#color\n    );\n\n    const serialized = {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#content,\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n    };\n\n    if (isForCopying) {\n      // Don't add the id when copying because the pasted editor mustn't be\n      // linked to an existing annotation.\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { value, fontSize, color, rect, pageIndex } = this.#initialData;\n\n    return (\n      serialized.value !== value ||\n      serialized.fontSize !== fontSize ||\n      serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  #cheatInitialRect(delayed = false) {\n    // The annotation has a rect but the editor has an other one.\n    // When we want to know if the annotation has changed (e.g. has been moved)\n    // we must compare the editor initial rect with the current one.\n    // So this method is a hack to have a way to compare the real rects.\n    if (!this.annotationElementId) {\n      return;\n    }\n\n    this.#setEditorDimensions();\n    if (!delayed && (this.width === 0 || this.height === 0)) {\n      setTimeout(() => this.#cheatInitialRect(/* delayed = */ true), 0);\n      return;\n    }\n\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    this.#initialData.rect = this.getRect(padding, padding);\n  }\n}\n\nexport { FreeTextEditor };\n","/* Copyright 2022 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\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { bindEvents } from \"./tools.js\";\nimport { ColorPicker } from \"./color_picker.js\";\nimport { Outliner } from \"./outliner.js\";\n\n/**\n * Basic draw editor in order to generate an Highlight annotation.\n */\nclass HighlightEditor extends AnnotationEditor {\n  #boxes;\n\n  #clipPathId = null;\n\n  #colorPicker = null;\n\n  #focusOutlines = null;\n\n  #highlightDiv = null;\n\n  #highlightOutlines = null;\n\n  #id = null;\n\n  #lastPoint = null;\n\n  #opacity;\n\n  #outlineId = null;\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _l10nPromise;\n\n  static _type = \"highlight\";\n\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n\n  constructor(params) {\n    super({ ...params, name: \"highlightEditor\" });\n    HighlightEditor._defaultColor ||=\n      this._uiManager.highlightColors?.values().next().value || \"#fff066\";\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this._isDraggable = false;\n\n    this.#createOutlines();\n    this.#addToDrawLayer();\n    this.rotate(this.rotation);\n  }\n\n  #createOutlines() {\n    const outliner = new Outliner(this.#boxes, /* borderWidth = */ 0.001);\n    this.#highlightOutlines = outliner.getOutlines();\n    ({\n      x: this.x,\n      y: this.y,\n      width: this.width,\n      height: this.height,\n    } = this.#highlightOutlines.box);\n\n    const outlinerForOutline = new Outliner(\n      this.#boxes,\n      /* borderWidth = */ 0.0025,\n      /* innerMargin = */ 0.001,\n      this._uiManager.direction === \"ltr\"\n    );\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n\n    // The last point is in the pages coordinate system.\n    const { lastPoint } = this.#focusOutlines.box;\n    this.#lastPoint = [\n      (lastPoint[0] - this.x) / this.width,\n      (lastPoint[1] - this.y) / this.height,\n    ];\n  }\n\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n);\n  }\n\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,\n        HighlightEditor._defaultColor,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n        this.color || HighlightEditor._defaultColor,\n      ],\n    ];\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: () => {\n        this.color = color;\n        this.parent.drawLayer.changeColor(this.#id, color);\n        this.#colorPicker?.updateColor(color);\n      },\n      undo: () => {\n        this.color = savedColor;\n        this.parent.drawLayer.changeColor(this.#id, savedColor);\n        this.#colorPicker?.updateColor(savedColor);\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  async addEditToolbar() {\n    const toolbar = await super.addEditToolbar();\n    if (!toolbar) {\n      return null;\n    }\n    if (this._uiManager.highlightColors) {\n      this.#colorPicker = new ColorPicker({ editor: this });\n      toolbar.addColorPicker(this.#colorPicker);\n    }\n    return toolbar;\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n\n  /** @inheritdoc */\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(0);\n  }\n\n  /** @inheritdoc */\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, 0);\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this.parent.addUndoableEditor(this);\n    this.div.focus();\n  }\n\n  /** @inheritdoc */\n  remove() {\n    super.remove();\n    this.#cleanDrawLayer();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    this.#addToDrawLayer();\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\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      // If mustBeSelected is true it means that this editor was selected\n      // when its parent has been destroyed, hence we must select it again.\n      mustBeSelected =\n        !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    if (mustBeSelected) {\n      // We select it after the parent has been set.\n      this.select();\n    }\n  }\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\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({ id: this.#id, clipPathId: this.#clipPathId } =\n      parent.drawLayer.highlight(\n        this.#highlightOutlines,\n        this.color,\n        this.#opacity\n      ));\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n    this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n  }\n\n  static #rotateBbox({ x, y, width, height }, angle) {\n    switch (angle) {\n      case 90:\n        return {\n          x: 1 - y - height,\n          y: x,\n          width: height,\n          height: width,\n        };\n      case 180:\n        return {\n          x: 1 - x - width,\n          y: 1 - y - height,\n          width,\n          height,\n        };\n      case 270:\n        return {\n          x: y,\n          y: 1 - x - width,\n          width: height,\n          height: width,\n        };\n    }\n    return {\n      x,\n      y,\n      width,\n      height,\n    };\n  }\n\n  /** @inheritdoc */\n  rotate(angle) {\n    const { drawLayer } = this.parent;\n    drawLayer.rotate(this.#id, angle);\n    drawLayer.rotate(this.#outlineId, angle);\n    drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this, angle));\n    drawLayer.updateBox(\n      this.#outlineId,\n      HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle)\n    );\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    const div = super.render();\n    const highlightDiv = (this.#highlightDiv = document.createElement(\"div\"));\n    div.append(highlightDiv);\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n\n    return div;\n  }\n\n  pointerover() {\n    this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n  }\n\n  pointerleave() {\n    this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n  }\n\n  /** @inheritdoc */\n  select() {\n    super.select();\n    this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n    this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n  }\n\n  /** @inheritdoc */\n  unselect() {\n    super.unselect();\n    this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n  }\n\n  #serializeBoxes() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const boxes = this.#boxes;\n    const quadPoints = new Array(boxes.length * 8);\n    let i = 0;\n    for (const { x, y, width, height } of boxes) {\n      const sx = x * pageWidth;\n      const sy = (1 - y - height) * pageHeight;\n      // The specifications say that the rectangle should start from the bottom\n      // left corner and go counter-clockwise.\n      // But when opening the file in Adobe Acrobat it appears that this isn't\n      // correct hence the 4th and 6th numbers are just swapped.\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\n  #serializeOutlines() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n    const tx = this.x * pageWidth;\n    const ty = (1 - this.y - this.height) * pageHeight;\n    const outlines = [];\n    for (const outline of this.#highlightOutlines.outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = tx + outline[i] * width;\n        points[i + 1] = ty + (1 - outline[i + 1]) * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    const editor = super.deserialize(data, parent, uiManager);\n\n    const { rect, color, quadPoints } = data;\n    editor.color = Util.makeHexColor(...color);\n    editor.#opacity = data.opacity;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / pageWidth;\n    editor.height = (rect[3] - rect[1]) / pageHeight;\n    const boxes = (editor.#boxes = []);\n    for (let i = 0; i < quadPoints.length; i += 8) {\n      boxes.push({\n        x: quadPoints[4] / pageWidth,\n        y: 1 - quadPoints[i + 5] / pageHeight,\n        width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n        height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight,\n      });\n    }\n    editor.#createOutlines();\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    // It doesn't make sense to copy/paste a highlight annotation.\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.color);\n\n    return {\n      annotationType: AnnotationEditorType.HIGHLIGHT,\n      color,\n      opacity: this.#opacity,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: 0,\n      structTreeParentId: this._structTreeParentId,\n    };\n  }\n\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\nexport { HighlightEditor };\n","/* Copyright 2022 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\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\nimport { noContextMenu } from \"../display_utils.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n  #baseHeight = 0;\n\n  #baseWidth = 0;\n\n  #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n  #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n  #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n  #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n  #canvasContextMenuTimeoutId = null;\n\n  #currentPath2D = new Path2D();\n\n  #disableEditing = false;\n\n  #hasSomethingToDraw = false;\n\n  #isCanvasInitialized = false;\n\n  #observer = null;\n\n  #realWidth = 0;\n\n  #realHeight = 0;\n\n  #requestFrameCallback = null;\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _defaultThickness = 1;\n\n  static _type = \"ink\";\n\n  static _editorType = AnnotationEditorType.INK;\n\n  constructor(params) {\n    super({ ...params, name: \"inkEditor\" });\n    this.color = params.color || null;\n    this.thickness = params.thickness || null;\n    this.opacity = params.opacity || null;\n    this.paths = [];\n    this.bezierPath2D = [];\n    this.allRawPaths = [];\n    this.currentPath = [];\n    this.scaleFactor = 1;\n    this.translationX = this.translationY = 0;\n    this.x = 0;\n    this.y = 0;\n    this._willKeepAspectRatio = true;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n);\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        InkEditor._defaultThickness = value;\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        InkEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        InkEditor._defaultOpacity = value / 100;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        this.#updateThickness(value);\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        this.#updateOpacity(value);\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(InkEditor._defaultOpacity * 100),\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.INK_THICKNESS,\n        this.thickness || InkEditor._defaultThickness,\n      ],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        this.color ||\n          InkEditor._defaultColor ||\n          AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n      ],\n    ];\n  }\n\n  /**\n   * Update the thickness and make this action undoable.\n   * @param {number} thickness\n   */\n  #updateThickness(thickness) {\n    const savedThickness = this.thickness;\n    this.addCommands({\n      cmd: () => {\n        this.thickness = thickness;\n        this.#fitToContent();\n      },\n      undo: () => {\n        this.thickness = savedThickness;\n        this.#fitToContent();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: () => {\n        this.color = color;\n        this.#redraw();\n      },\n      undo: () => {\n        this.color = savedColor;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the opacity and make this action undoable.\n   * @param {number} opacity\n   */\n  #updateOpacity(opacity) {\n    opacity /= 100;\n    const savedOpacity = this.opacity;\n    this.addCommands({\n      cmd: () => {\n        this.opacity = opacity;\n        this.#redraw();\n      },\n      undo: () => {\n        this.opacity = savedOpacity;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_OPACITY,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.canvas) {\n      this.#createCanvas();\n      this.#createObserver();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n      this.#setCanvasDims();\n    }\n    this.#fitToContent();\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.canvas === null) {\n      return;\n    }\n\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n\n    // Destroy the canvas.\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.remove();\n    this.canvas = null;\n\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n      this.#canvasContextMenuTimeoutId = null;\n    }\n\n    this.#observer.disconnect();\n    this.#observer = null;\n\n    super.remove();\n  }\n\n  setParent(parent) {\n    if (!this.parent && parent) {\n      // We've a parent hence the rescale will be handled thanks to the\n      // ResizeObserver.\n      this._uiManager.removeShouldRescale(this);\n    } else if (this.parent && parent === null) {\n      // The editor is removed from the DOM, hence we handle the rescale thanks\n      // to the onScaleChanging callback.\n      // This way, it'll be saved/printed correctly.\n      this._uiManager.addShouldRescale(this);\n    }\n    super.setParent(parent);\n  }\n\n  onScaleChanging() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const width = this.width * parentWidth;\n    const height = this.height * parentHeight;\n    this.setDimensions(width, height);\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.#disableEditing || this.canvas === null) {\n      return;\n    }\n\n    super.enableEditMode();\n    this._isDraggable = false;\n    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode() || this.canvas === null) {\n      return;\n    }\n\n    super.disableEditMode();\n    this._isDraggable = !this.isEmpty();\n    this.div.classList.remove(\"editing\");\n\n    this.canvas.removeEventListener(\n      \"pointerdown\",\n      this.#boundCanvasPointerdown\n    );\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this._isDraggable = !this.isEmpty();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return (\n      this.paths.length === 0 ||\n      (this.paths.length === 1 && this.paths[0].length === 0)\n    );\n  }\n\n  #getInitialBBox() {\n    const {\n      parentRotation,\n      parentDimensions: [width, height],\n    } = this;\n    switch (parentRotation) {\n      case 90:\n        return [0, height, height, width];\n      case 180:\n        return [width, height, width, height];\n      case 270:\n        return [width, 0, height, width];\n      default:\n        return [0, 0, width, height];\n    }\n  }\n\n  /**\n   * Set line styles.\n   */\n  #setStroke() {\n    const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\n    ctx.lineWidth = (thickness * parentScale) / scaleFactor;\n    ctx.lineCap = \"round\";\n    ctx.lineJoin = \"round\";\n    ctx.miterLimit = 10;\n    ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n  }\n\n  /**\n   * Start to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #startDrawing(x, y) {\n    this.canvas.addEventListener(\"contextmenu\", noContextMenu);\n    this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n    this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n    this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n    this.canvas.removeEventListener(\n      \"pointerdown\",\n      this.#boundCanvasPointerdown\n    );\n\n    this.isEditing = true;\n    if (!this.#isCanvasInitialized) {\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.thickness ||= InkEditor._defaultThickness;\n      this.color ||=\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n      this.opacity ??= InkEditor._defaultOpacity;\n    }\n    this.currentPath.push([x, y]);\n    this.#hasSomethingToDraw = false;\n    this.#setStroke();\n\n    this.#requestFrameCallback = () => {\n      this.#drawPoints();\n      if (this.#requestFrameCallback) {\n        window.requestAnimationFrame(this.#requestFrameCallback);\n      }\n    };\n    window.requestAnimationFrame(this.#requestFrameCallback);\n  }\n\n  /**\n   * Draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #draw(x, y) {\n    const [lastX, lastY] = this.currentPath.at(-1);\n    if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n      return;\n    }\n    const currentPath = this.currentPath;\n    let path2D = this.#currentPath2D;\n    currentPath.push([x, y]);\n    this.#hasSomethingToDraw = true;\n\n    if (currentPath.length <= 2) {\n      path2D.moveTo(...currentPath[0]);\n      path2D.lineTo(x, y);\n      return;\n    }\n\n    if (currentPath.length === 3) {\n      this.#currentPath2D = path2D = new Path2D();\n      path2D.moveTo(...currentPath[0]);\n    }\n\n    this.#makeBezierCurve(\n      path2D,\n      ...currentPath.at(-3),\n      ...currentPath.at(-2),\n      x,\n      y\n    );\n  }\n\n  #endPath() {\n    if (this.currentPath.length === 0) {\n      return;\n    }\n    const lastPoint = this.currentPath.at(-1);\n    this.#currentPath2D.lineTo(...lastPoint);\n  }\n\n  /**\n   * Stop to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #stopDrawing(x, y) {\n    this.#requestFrameCallback = null;\n\n    x = Math.min(Math.max(x, 0), this.canvas.width);\n    y = Math.min(Math.max(y, 0), this.canvas.height);\n\n    this.#draw(x, y);\n    this.#endPath();\n\n    // Interpolate the path entered by the user with some\n    // Bezier's curves in order to have a smoother path and\n    // to reduce the data size used to draw it in the PDF.\n    let bezier;\n    if (this.currentPath.length !== 1) {\n      bezier = this.#generateBezierPoints();\n    } else {\n      // We have only one point finally.\n      const xy = [x, y];\n      bezier = [[xy, xy.slice(), xy.slice(), xy]];\n    }\n    const path2D = this.#currentPath2D;\n    const currentPath = this.currentPath;\n    this.currentPath = [];\n    this.#currentPath2D = new Path2D();\n\n    const cmd = () => {\n      this.allRawPaths.push(currentPath);\n      this.paths.push(bezier);\n      this.bezierPath2D.push(path2D);\n      this.rebuild();\n    };\n\n    const undo = () => {\n      this.allRawPaths.pop();\n      this.paths.pop();\n      this.bezierPath2D.pop();\n      if (this.paths.length === 0) {\n        this.remove();\n      } else {\n        if (!this.canvas) {\n          this.#createCanvas();\n          this.#createObserver();\n        }\n        this.#fitToContent();\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  #drawPoints() {\n    if (!this.#hasSomethingToDraw) {\n      return;\n    }\n    this.#hasSomethingToDraw = false;\n\n    const thickness = Math.ceil(this.thickness * this.parentScale);\n    const lastPoints = this.currentPath.slice(-3);\n    const x = lastPoints.map(xy => xy[0]);\n    const y = lastPoints.map(xy => xy[1]);\n    const xMin = Math.min(...x) - thickness;\n    const xMax = Math.max(...x) + thickness;\n    const yMin = Math.min(...y) - thickness;\n    const yMax = Math.max(...y) + thickness;\n\n    const { ctx } = this;\n    ctx.save();\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      // In Chrome, the clip() method doesn't work as expected.\n      ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n      ctx.beginPath();\n      ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n      ctx.clip();\n    } else {\n      ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n    }\n\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n    ctx.stroke(this.#currentPath2D);\n\n    ctx.restore();\n  }\n\n  #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n    const prevX = (x0 + x1) / 2;\n    const prevY = (y0 + y1) / 2;\n    const x3 = (x1 + x2) / 2;\n    const y3 = (y1 + y2) / 2;\n\n    path2D.bezierCurveTo(\n      prevX + (2 * (x1 - prevX)) / 3,\n      prevY + (2 * (y1 - prevY)) / 3,\n      x3 + (2 * (x1 - x3)) / 3,\n      y3 + (2 * (y1 - y3)) / 3,\n      x3,\n      y3\n    );\n  }\n\n  #generateBezierPoints() {\n    const path = this.currentPath;\n    if (path.length <= 2) {\n      return [[path[0], path[0], path.at(-1), path.at(-1)]];\n    }\n\n    const bezierPoints = [];\n    let i;\n    let [x0, y0] = path[0];\n    for (i = 1; i < path.length - 2; i++) {\n      const [x1, y1] = path[i];\n      const [x2, y2] = path[i + 1];\n      const x3 = (x1 + x2) / 2;\n      const y3 = (y1 + y2) / 2;\n\n      // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n      // Convert the quadratic to a cubic\n      // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\n      const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n      const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3];\n\n      bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n      [x0, y0] = [x3, y3];\n    }\n\n    const [x1, y1] = path[i];\n    const [x2, y2] = path[i + 1];\n\n    // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\n    const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n    const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3];\n\n    bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n    return bezierPoints;\n  }\n\n  /**\n   * Redraw all the paths.\n   */\n  #redraw() {\n    if (this.isEmpty()) {\n      this.#updateTransform();\n      return;\n    }\n    this.#setStroke();\n\n    const { canvas, ctx } = this;\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    this.#updateTransform();\n\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n  }\n\n  /**\n   * Commit the curves we have in this editor.\n   */\n  commit() {\n    if (this.#disableEditing) {\n      return;\n    }\n\n    super.commit();\n\n    this.isEditing = false;\n    this.disableEditMode();\n\n    // This editor must be on top of the main ink editor.\n    this.setInForeground();\n\n    this.#disableEditing = true;\n    this.div.classList.add(\"disabled\");\n\n    this.#fitToContent(/* firstTime = */ true);\n    this.select();\n\n    this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n    // When commiting, the position of this editor is changed, hence we must\n    // move it to the right position in the DOM.\n    this.moveInDOM();\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    this.enableEditMode();\n  }\n\n  /**\n   * onpointerdown callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerdown(event) {\n    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n      return;\n    }\n\n    // We want to draw on top of any other editors.\n    // Since it's the last child, there's no need to give it a higher z-index.\n    this.setInForeground();\n\n    event.preventDefault();\n\n    if (!this.div.contains(document.activeElement)) {\n      this.div.focus({\n        preventScroll: true /* See issue #17327 */,\n      });\n    }\n\n    this.#startDrawing(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointermove callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointermove(event) {\n    event.preventDefault();\n    this.#draw(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointerup callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerup(event) {\n    event.preventDefault();\n    this.#endDrawing(event);\n  }\n\n  /**\n   * onpointerleave callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerleave(event) {\n    this.#endDrawing(event);\n  }\n\n  /**\n   * End the drawing.\n   * @param {PointerEvent} event\n   */\n  #endDrawing(event) {\n    this.canvas.removeEventListener(\n      \"pointerleave\",\n      this.#boundCanvasPointerleave\n    );\n    this.canvas.removeEventListener(\n      \"pointermove\",\n      this.#boundCanvasPointermove\n    );\n    this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n    // Slight delay to avoid the context menu to appear (it can happen on a long\n    // tap with a pen).\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n    }\n    this.#canvasContextMenuTimeoutId = setTimeout(() => {\n      this.#canvasContextMenuTimeoutId = null;\n      this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n    }, 10);\n\n    this.#stopDrawing(event.offsetX, event.offsetY);\n\n    this.addToAnnotationStorage();\n\n    // Since the ink editor covers all of the page and we want to be able\n    // to select another editor, we just put this one in the background.\n    this.setInBackground();\n  }\n\n  /**\n   * Create the canvas element.\n   */\n  #createCanvas() {\n    this.canvas = document.createElement(\"canvas\");\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.className = \"inkEditorCanvas\";\n    this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n\n    this.div.append(this.canvas);\n    this.ctx = this.canvas.getContext(\"2d\");\n  }\n\n  /**\n   * Create the resize observer.\n   */\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return !this.isEmpty() && this.#disableEditing;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n\n    this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n\n    const [x, y, w, h] = this.#getInitialBBox();\n    this.setAt(x, y, 0, 0);\n    this.setDims(w, h);\n\n    this.#createCanvas();\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n      this.#redraw();\n      this.div.classList.add(\"disabled\");\n    } else {\n      this.div.classList.add(\"editing\");\n      this.enableEditMode();\n    }\n\n    this.#createObserver();\n\n    return this.div;\n  }\n\n  #setCanvasDims() {\n    if (!this.#isCanvasInitialized) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.canvas.width = Math.ceil(this.width * parentWidth);\n    this.canvas.height = Math.ceil(this.height * parentHeight);\n    this.#updateTransform();\n  }\n\n  /**\n   * When the dimensions of the div change the inner canvas must\n   * renew its dimensions, hence it must redraw its own contents.\n   * @param {number} width - the new width of the div\n   * @param {number} height - the new height of the div\n   * @returns\n   */\n  setDimensions(width, height) {\n    const roundedWidth = Math.round(width);\n    const roundedHeight = Math.round(height);\n    if (\n      this.#realWidth === roundedWidth &&\n      this.#realHeight === roundedHeight\n    ) {\n      return;\n    }\n\n    this.#realWidth = roundedWidth;\n    this.#realHeight = roundedHeight;\n\n    this.canvas.style.visibility = \"hidden\";\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.fixAndSetPosition();\n\n    if (this.#disableEditing) {\n      this.#setScaleFactor(width, height);\n    }\n\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.canvas.style.visibility = \"visible\";\n\n    // For any reason the dimensions couldn't be in percent but in pixels, hence\n    // we must fix them.\n    this.fixDims();\n  }\n\n  #setScaleFactor(width, height) {\n    const padding = this.#getPadding();\n    const scaleFactorW = (width - padding) / this.#baseWidth;\n    const scaleFactorH = (height - padding) / this.#baseHeight;\n    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n  }\n\n  /**\n   * Update the canvas transform.\n   */\n  #updateTransform() {\n    const padding = this.#getPadding() / 2;\n    this.ctx.setTransform(\n      this.scaleFactor,\n      0,\n      0,\n      this.scaleFactor,\n      this.translationX * this.scaleFactor + padding,\n      this.translationY * this.scaleFactor + padding\n    );\n  }\n\n  /**\n   * Convert into a Path2D.\n   * @param {Array<Array<number>>} bezier\n   * @returns {Path2D}\n   */\n  static #buildPath2D(bezier) {\n    const path2D = new Path2D();\n    for (let i = 0, ii = bezier.length; i < ii; i++) {\n      const [first, control1, control2, second] = bezier[i];\n      if (i === 0) {\n        path2D.moveTo(...first);\n      }\n      path2D.bezierCurveTo(\n        control1[0],\n        control1[1],\n        control2[0],\n        control2[1],\n        second[0],\n        second[1]\n      );\n    }\n    return path2D;\n  }\n\n  static #toPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] += blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] + blX;\n          points[i + 1] = x + blY;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] += blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trX - points[i + 1];\n          points[i + 1] = trY - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n\n  static #fromPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] -= blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] - blY;\n          points[i + 1] = x - blX;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] -= blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trY - points[i + 1];\n          points[i + 1] = trX - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n\n  /**\n   * Transform and serialize the paths.\n   * @param {number} s - scale factor\n   * @param {number} tx - abscissa of the translation\n   * @param {number} ty - ordinate of the translation\n   * @param {Array<number>} rect - the bounding box of the annotation\n   */\n  #serializePaths(s, tx, ty, rect) {\n    const paths = [];\n    const padding = this.thickness / 2;\n    const shiftX = s * tx + padding;\n    const shiftY = s * ty + padding;\n    for (const bezier of this.paths) {\n      const buffer = [];\n      const points = [];\n      for (let j = 0, jj = bezier.length; j < jj; j++) {\n        const [first, control1, control2, second] = bezier[j];\n        const p10 = s * first[0] + shiftX;\n        const p11 = s * first[1] + shiftY;\n        const p20 = s * control1[0] + shiftX;\n        const p21 = s * control1[1] + shiftY;\n        const p30 = s * control2[0] + shiftX;\n        const p31 = s * control2[1] + shiftY;\n        const p40 = s * second[0] + shiftX;\n        const p41 = s * second[1] + shiftY;\n\n        if (j === 0) {\n          buffer.push(p10, p11);\n          points.push(p10, p11);\n        }\n        buffer.push(p20, p21, p30, p31, p40, p41);\n        points.push(p20, p21);\n        if (j === jj - 1) {\n          points.push(p40, p41);\n        }\n      }\n      paths.push({\n        bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n        points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\n      });\n    }\n\n    return paths;\n  }\n\n  /**\n   * Get the bounding box containing all the paths.\n   * @returns {Array<number>}\n   */\n  #getBbox() {\n    let xMin = Infinity;\n    let xMax = -Infinity;\n    let yMin = Infinity;\n    let yMax = -Infinity;\n\n    for (const path of this.paths) {\n      for (const [first, control1, control2, second] of path) {\n        const bbox = Util.bezierBoundingBox(\n          ...first,\n          ...control1,\n          ...control2,\n          ...second\n        );\n        xMin = Math.min(xMin, bbox[0]);\n        yMin = Math.min(yMin, bbox[1]);\n        xMax = Math.max(xMax, bbox[2]);\n        yMax = Math.max(yMax, bbox[3]);\n      }\n    }\n\n    return [xMin, yMin, xMax, yMax];\n  }\n\n  /**\n   * The bounding box is computed with null thickness, so we must take\n   * it into account for the display.\n   * It corresponds to the total padding, hence it should be divided by 2\n   * in order to have left/right paddings.\n   * @returns {number}\n   */\n  #getPadding() {\n    return this.#disableEditing\n      ? Math.ceil(this.thickness * this.parentScale)\n      : 0;\n  }\n\n  /**\n   * Set the div position and dimensions in order to fit to\n   * the bounding box of the contents.\n   * @returns {undefined}\n   */\n  #fitToContent(firstTime = false) {\n    if (this.isEmpty()) {\n      return;\n    }\n\n    if (!this.#disableEditing) {\n      this.#redraw();\n      return;\n    }\n\n    const bbox = this.#getBbox();\n    const padding = this.#getPadding();\n    this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n\n    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n\n    this.setAspectRatio(width, height);\n\n    const prevTranslationX = this.translationX;\n    const prevTranslationY = this.translationY;\n\n    this.translationX = -bbox[0];\n    this.translationY = -bbox[1];\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.#realWidth = width;\n    this.#realHeight = height;\n\n    this.setDims(width, height);\n    const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n    this.translate(\n      prevTranslationX - this.translationX - unscaledPadding,\n      prevTranslationY - this.translationY - unscaledPadding\n    );\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    if (data instanceof InkAnnotationElement) {\n      return null;\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n\n    editor.thickness = data.thickness;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.opacity = data.opacity;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const width = editor.width * pageWidth;\n    const height = editor.height * pageHeight;\n    const scaleFactor = editor.parentScale;\n    const padding = data.thickness / 2;\n\n    editor.#disableEditing = true;\n    editor.#realWidth = Math.round(width);\n    editor.#realHeight = Math.round(height);\n\n    const { paths, rect, rotation } = data;\n\n    for (let { bezier } of paths) {\n      bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n      const path = [];\n      editor.paths.push(path);\n      let p0 = scaleFactor * (bezier[0] - padding);\n      let p1 = scaleFactor * (bezier[1] - padding);\n      for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n        const p10 = scaleFactor * (bezier[i] - padding);\n        const p11 = scaleFactor * (bezier[i + 1] - padding);\n        const p20 = scaleFactor * (bezier[i + 2] - padding);\n        const p21 = scaleFactor * (bezier[i + 3] - padding);\n        const p30 = scaleFactor * (bezier[i + 4] - padding);\n        const p31 = scaleFactor * (bezier[i + 5] - padding);\n        path.push([\n          [p0, p1],\n          [p10, p11],\n          [p20, p21],\n          [p30, p31],\n        ]);\n        p0 = p30;\n        p1 = p31;\n      }\n      const path2D = this.#buildPath2D(path);\n      editor.bezierPath2D.push(path2D);\n    }\n\n    const bbox = editor.#getBbox();\n    editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n    editor.#setScaleFactor(width, height);\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize() {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n    return {\n      annotationType: AnnotationEditorType.INK,\n      color,\n      thickness: this.thickness,\n      opacity: this.opacity,\n      paths: this.#serializePaths(\n        this.scaleFactor / this.parentScale,\n        this.translationX,\n        this.translationY,\n        rect\n      ),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n    };\n  }\n}\n\nexport { InkEditor };\n","/* Copyright 2022 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\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { PixelsPerInch } from \"../display_utils.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n\n  #bitmapId = null;\n\n  #bitmapPromise = null;\n\n  #bitmapUrl = null;\n\n  #bitmapFile = null;\n\n  #bitmapFileName = \"\";\n\n  #canvas = null;\n\n  #observer = null;\n\n  #resizeTimeoutId = null;\n\n  #isSvg = false;\n\n  #hasBeenAddedInUndoStack = false;\n\n  static _type = \"stamp\";\n\n  static _editorType = AnnotationEditorType.STAMP;\n\n  constructor(params) {\n    super({ ...params, name: \"stampEditor\" });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n);\n  }\n\n  static get supportedTypes() {\n    // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n    // to know which types are supported by the browser.\n    const types = [\n      \"apng\",\n      \"avif\",\n      \"bmp\",\n      \"gif\",\n      \"jpeg\",\n      \"png\",\n      \"svg+xml\",\n      \"webp\",\n      \"x-icon\",\n    ];\n    return shadow(\n      this,\n      \"supportedTypes\",\n      types.map(type => `image/${type}`)\n    );\n  }\n\n  static get supportedTypesStr() {\n    return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n  }\n\n  /** @inheritdoc */\n  static isHandlingMimeForPasting(mime) {\n    return this.supportedTypes.includes(mime);\n  }\n\n  /** @inheritdoc */\n  static paste(item, parent) {\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\n      bitmapFile: item.getAsFile(),\n    });\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\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (this.#canvas) {\n      this.div.focus();\n    }\n  }\n\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager\n        .getFromId(this.#bitmapId)\n        .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\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\n        .getFromUrl(url)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\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\n        .getFromFile(file)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    const input = document.createElement(\"input\");\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      input.hidden = true;\n      input.id = \"stampEditorFileInput\";\n      document.body.append(input);\n    }\n    input.type = \"file\";\n    input.accept = StampEditor.supportedTypesStr;\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(\n            input.files[0]\n          );\n          this.#getBitmapFetched(data);\n        }\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          input.remove();\n        }\n        resolve();\n      });\n      input.addEventListener(\"cancel\", () => {\n        this.remove();\n        resolve();\n      });\n    }).finally(() => this.#getBitmapDone());\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n      input.click();\n    }\n  }\n\n  /** @inheritdoc */\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      this.#observer?.disconnect();\n      this.#observer = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      // It's possible to have to rebuild an editor which is not on a visible\n      // page.\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (this.#bitmapId) {\n      this.#getBitmap();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this._isDraggable = true;\n    this.div.focus();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !(\n      this.#bitmapPromise ||\n      this.#bitmap ||\n      this.#bitmapUrl ||\n      this.#bitmapFile\n    );\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.div.hidden = true;\n\n    if (this.#bitmap) {\n      this.#createCanvas();\n    } else {\n      this.#getBitmap();\n    }\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n    }\n\n    return this.div;\n  }\n\n  #createCanvas() {\n    const { div } = this;\n    let { width, height } = 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 (\n      width > MAX_RATIO * pageWidth ||\n      height > MAX_RATIO * pageHeight\n    ) {\n      // If the the image is too big compared to the page dimensions\n      // (more than MAX_RATIO) then we scale it down.\n      const factor = Math.min(\n        (MAX_RATIO * pageWidth) / width,\n        (MAX_RATIO * pageHeight) / height\n      );\n      width *= factor;\n      height *= factor;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(\n      (width * parentWidth) / pageWidth,\n      (height * parentHeight) / pageHeight\n    );\n\n    this._uiManager.enableWaiting(false);\n    const canvas = (this.#canvas = document.createElement(\"canvas\"));\n    div.append(canvas);\n    div.hidden = false;\n    this.#drawBitmap(width, height);\n    this.#createObserver();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n\n    // There are multiple ways to add an image to the page, so here we just\n    // count the number of times an image is added to the page whatever the way\n    // is.\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        subtype: this.editorType,\n        data: {\n          action: \"inserted_image\",\n        },\n      },\n    });\n    this.addAltTextButton();\n    if (this.#bitmapFileName) {\n      canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n    }\n  }\n\n  /**\n   * When the dimensions of the div change the inner canvas must\n   * renew its dimensions, hence it must redraw its own contents.\n   * @param {number} width - the new width of the div\n   * @param {number} height - the new height of the div\n   * @returns\n   */\n  #setDimensions(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.setDims(width, height);\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    // When the user is resizing the editor we just use CSS to scale the image\n    // to avoid redrawing it too often.\n    // And once the user stops resizing the editor we redraw the image in\n    // rescaling it correctly (see this.#scaleBitmap).\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap(width, height);\n    }, TIME_TO_WAIT);\n  }\n\n  #scaleBitmap(width, height) {\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\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\n      if (newWidth > 2 * width) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(newWidth / 2);\n        newWidth =\n          newWidth >= 16384\n            ? Math.floor(newWidth / 2) - 1\n            : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight =\n          newHeight >= 16384\n            ? Math.floor(newHeight / 2) - 1\n            : Math.ceil(newHeight / 2);\n      }\n\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        prevWidth,\n        prevHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      bitmap = offscreen.transferToImageBitmap();\n    }\n\n    return bitmap;\n  }\n\n  #drawBitmap(width, height) {\n    width = Math.ceil(width);\n    height = Math.ceil(height);\n    const canvas = this.#canvas;\n    if (!canvas || (canvas.width === width && canvas.height === height)) {\n      return;\n    }\n    canvas.width = width;\n    canvas.height = height;\n    const bitmap = this.#isSvg\n      ? this.#bitmap\n      : this.#scaleBitmap(width, height);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      width,\n      height\n    );\n  }\n\n  /** @inheritdoc */\n  getImageForAltText() {\n    return this.#canvas;\n  }\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      // We convert to a data url because it's sync and the url can live in the\n      // clipboard.\n      const canvas = document.createElement(\"canvas\");\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n\n      return canvas.toDataURL();\n    }\n\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n      // image resolution when rasterizing it.\n      const width = Math.round(\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const height = Math.round(\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        this.#bitmap,\n        0,\n        0,\n        this.#bitmap.width,\n        this.#bitmap.height,\n        0,\n        0,\n        width,\n        height\n      );\n      return offscreen.transferToImageBitmap();\n    }\n\n    return structuredClone(this.#bitmap);\n  }\n\n  /**\n   * Create the resize observer.\n   */\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.#setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    if (data instanceof StampAnnotationElement) {\n      return null;\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n    const { rect, bitmapUrl, bitmapId, isSvg, accessibilityData } = data;\n    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const serialized = {\n      annotationType: AnnotationEditorType.STAMP,\n      bitmapId: this.#bitmapId,\n      pageIndex: this.pageIndex,\n      rect: this.getRect(0, 0),\n      rotation: this.rotation,\n      isSvg: this.#isSvg,\n      structTreeParentId: this._structTreeParentId,\n    };\n\n    if (isForCopying) {\n      // We don't know what's the final destination (this pdf or another one)\n      // of this annotation and the clipboard doesn't support ImageBitmaps,\n      // hence we serialize the bitmap to a data url.\n      serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n      serialized.accessibilityData = this.altTextData;\n      return serialized;\n    }\n\n    const { decorative, altText } = this.altTextData;\n    if (!decorative && altText) {\n      serialized.accessibilityData = { type: \"Figure\", alt: altText };\n    }\n\n    if (context === null) {\n      return serialized;\n    }\n\n    context.stamps ||= new Map();\n    const area = this.#isSvg\n      ? (serialized.rect[2] - serialized.rect[0]) *\n        (serialized.rect[3] - serialized.rect[1])\n      : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      // We don't want to have multiple copies of the same bitmap in the\n      // annotationMap, hence we only add the bitmap the first time we meet it.\n      context.stamps.set(this.#bitmapId, { area, serialized });\n      serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n    } else if (this.#isSvg) {\n      // If we have multiple copies of the same svg but with different sizes,\n      // then we want to keep the biggest one.\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(/* toUrl = */ false);\n      }\n    }\n    return serialized;\n  }\n}\n\nexport { StampEditor };\n","/* Copyright 2022 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n/** @typedef {import(\"../draw_layer.js\").DrawLayer} DrawLayer */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { HighlightEditor } from \"./highlight.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {HTMLDivElement} [textLayer]\n * @property {DrawLayer} drawLayer\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n\n  #allowClick = false;\n\n  #annotationLayer = null;\n\n  #boundPointerup = this.pointerup.bind(this);\n\n  #boundPointerUpAfterSelection = this.pointerUpAfterSelection.bind(this);\n\n  #boundPointerdown = this.pointerdown.bind(this);\n\n  #editorFocusTimeoutId = null;\n\n  #boundSelectionStart = this.selectionStart.bind(this);\n\n  #editors = new Map();\n\n  #hadPointerDown = false;\n\n  #isCleaningUp = false;\n\n  #isDisabling = false;\n\n  #textLayer = null;\n\n  #uiManager;\n\n  static _initialized = false;\n\n  static #editorTypes = new Map(\n    [FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [\n      type._editorType,\n      type,\n    ])\n  );\n\n  /**\n   * @param {AnnotationEditorLayerOptions} options\n   */\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\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);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n\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\n    this.#uiManager.addLayer(this);\n  }\n\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   */\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n\n  /**\n   * The mode has changed: it must be updated.\n   * @param {number} mode\n   */\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      case AnnotationEditorType.INK:\n        // We always want to have an ink editor ready to draw in.\n        this.addInkEditorIfNeeded(false);\n\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.disableClick();\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\n    if (mode !== AnnotationEditorType.NONE) {\n      const { classList } = this.div;\n      for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n        classList.toggle(\n          `${editorType._type}Editing`,\n          mode === editorType._editorType\n        );\n      }\n      this.div.hidden = false;\n    }\n  }\n\n  addInkEditorIfNeeded(isCommitting) {\n    if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n      // We don't want to add an ink editor if we're not in ink mode!\n      return;\n    }\n\n    if (!isCommitting) {\n      // We're removing an editor but an empty one can already exist so in this\n      // case we don't need to create a new one.\n      for (const editor of this.#editors.values()) {\n        if (editor.isEmpty()) {\n          editor.setInBackground();\n          return;\n        }\n      }\n    }\n\n    const editor = this.#createAndAddNewEditor(\n      { offsetX: 0, offsetY: 0 },\n      /* isCentered = */ false\n    );\n    editor.setInBackground();\n  }\n\n  /**\n   * Set the editing state.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  /**\n   * Enable pointer events on the main div in order to enable\n   * editor creation.\n   */\n  enable() {\n    this.togglePointerEvents(true);\n    const annotationElementIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n      if (editor.annotationElementId) {\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n\n    if (!this.#annotationLayer) {\n      return;\n    }\n\n    const editables = this.#annotationLayer.getEditableAnnotations();\n    for (const editable of editables) {\n      // The element must be hidden whatever its state is.\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 = this.deserialize(editable);\n      if (!editor) {\n        continue;\n      }\n      this.addOrRebuild(editor);\n      editor.enableEditing();\n    }\n  }\n\n  /**\n   * Disable editor creation.\n   */\n  disable() {\n    this.#isDisabling = true;\n    this.togglePointerEvents(false);\n    const hiddenAnnotationIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n      if (!editor.annotationElementId || editor.serialize() !== null) {\n        hiddenAnnotationIds.add(editor.annotationElementId);\n        continue;\n      }\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\n      editor.remove();\n    }\n\n    if (this.#annotationLayer) {\n      // Show the annotations that were hidden in enable().\n      const editables = this.#annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const { id } = editable.data;\n        if (\n          hiddenAnnotationIds.has(id) ||\n          this.#uiManager.isDeletedAnnotationElement(id)\n        ) {\n          continue;\n        }\n        editable.show();\n      }\n    }\n\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const { classList } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n\n    this.#isDisabling = false;\n  }\n\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n\n  /**\n   * Set the current editor.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n\n    this.#uiManager.setActiveEditor(editor);\n  }\n\n  enableTextSelection() {\n    if (this.#textLayer?.div) {\n      document.addEventListener(\"selectstart\", this.#boundSelectionStart);\n    }\n  }\n\n  disableTextSelection() {\n    if (this.#textLayer?.div) {\n      document.removeEventListener(\"selectstart\", this.#boundSelectionStart);\n    }\n  }\n\n  enableClick() {\n    this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  disableClick() {\n    this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const { annotationElementId } = editor;\n    if (\n      annotationElementId &&\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n    ) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  remove(editor) {\n    // Since we can undo a removal we need to keep the\n    // parent property as it is, so don't null it!\n\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n\n    if (!this.#isCleaningUp) {\n      this.addInkEditorIfNeeded(/* isCommitting = */ false);\n    }\n  }\n\n  /**\n   * An editor can have a different parent, for example after having\n   * being dragged and droped from a page to another.\n   * @param {AnnotationEditor} editor\n   */\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n\n    if (editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\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\n  /**\n   * Add a new editor in the current view.\n   * @param {AnnotationEditor} editor\n   */\n  add(editor) {\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n\n    // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n    editor.fixAndSetPosition();\n    editor.onceAdded();\n    this.#uiManager.addToAnnotationStorage(editor);\n  }\n\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n\n    const { activeElement } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      // When the div is moved in the DOM the focus can move somewhere else,\n      // so we want to be sure that the focus will stay on the editor but we\n      // don't want to call any focus callbacks, hence we disable them and only\n      // re-enable them when the editor has the focus.\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\n            \"focusin\",\n            () => {\n              editor._focusEventsAllowed = true;\n            },\n            { once: true }\n          );\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      editor.div,\n      editor.contentDiv,\n      /* isRemovable = */ true\n    );\n  }\n\n  /**\n   * Add or rebuild depending if it has been removed or not.\n   * @param {AnnotationEditor} editor\n   */\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n    } else {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: false });\n  }\n\n  /**\n   * Get an id for an editor.\n   * @returns {string}\n   */\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} params\n   * @returns {AnnotationEditor}\n   */\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n\n  /**\n   * Paste some content into a new editor.\n   * @param {number} mode\n   * @param {Object} params\n   */\n  pasteEditor(mode, params) {\n    this.#uiManager.updateToolbar(mode);\n    this.#uiManager.updateMode(mode);\n\n    const { offsetX, offsetY } = 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\n  /**\n   * Create a new editor\n   * @param {Object} data\n   * @returns {AnnotationEditor | null}\n   */\n  deserialize(data) {\n    return (\n      AnnotationEditorLayer.#editorTypes\n        .get(data.annotationType ?? data.annotationEditorType)\n        ?.deserialize(data, this, this.#uiManager) || null\n    );\n  }\n\n  /**\n   * Create and add a new editor.\n   * @param {PointerEvent} event\n   * @param {boolean} isCentered\n   * @param [Object] data\n   * @returns {AnnotationEditor}\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\n    return editor;\n  }\n\n  #getCenterPoint() {\n    const { x, y, width, height } = this.div.getBoundingClientRect();\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] =\n      this.viewport.rotation % 180 === 0\n        ? [centerX, centerY]\n        : [centerY, centerX];\n\n    return { offsetX, offsetY };\n  }\n\n  /**\n   * Create and add a new editor.\n   */\n  addNewEditor() {\n    this.#createAndAddNewEditor(\n      this.#getCenterPoint(),\n      /* isCentered = */ true\n    );\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#uiManager.isSelected(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n\n  /**\n   * SelectionChange callback.\n   * @param {Event} _event\n   */\n  selectionStart(_event) {\n    this.#textLayer?.div.addEventListener(\n      \"pointerup\",\n      this.#boundPointerUpAfterSelection,\n      { once: true }\n    );\n  }\n\n  /**\n   * Called when the user releases the mouse button after having selected\n   * some text.\n   * @param {PointerEvent} event\n   */\n  pointerUpAfterSelection(event) {\n    const selection = document.getSelection();\n    if (selection.rangeCount === 0) {\n      return;\n    }\n    const range = selection.getRangeAt(0);\n    if (range.collapsed) {\n      return;\n    }\n\n    if (!this.#textLayer?.div.contains(range.commonAncestorContainer)) {\n      return;\n    }\n\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight,\n    } = this.#textLayer.div.getBoundingClientRect();\n    const bboxes = range.getClientRects();\n\n    // We must rotate the boxes because we want to have them in the non-rotated\n    // page coordinates.\n    let rotator;\n    switch (this.viewport.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\n    const boxes = [];\n    for (const { x, y, width, height } of bboxes) {\n      if (width === 0 || height === 0) {\n        continue;\n      }\n      boxes.push(rotator(x, y, width, height));\n    }\n    if (boxes.length !== 0) {\n      this.#createAndAddNewEditor(event, false, {\n        boxes,\n      });\n    }\n    selection.empty();\n  }\n\n  /**\n   * Pointerup callback.\n   * @param {PointerEvent} event\n   */\n  pointerup(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Don't create an editor on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    if (!this.#hadPointerDown) {\n      // It can happen when the user starts a drag inside a text editor\n      // and then releases the mouse button outside of it. In such a case\n      // we don't want to create a new editor, hence we check that a pointerdown\n      // occurred on this div previously.\n      return;\n    }\n    this.#hadPointerDown = false;\n\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n\n    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n\n    this.#createAndAddNewEditor(event, /* isCentered = */ false);\n  }\n\n  /**\n   * Pointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      // It's possible to have a second pointerdown event before a pointerup one\n      // when the user puts a finger on a touchscreen and then add a second one\n      // to start a pinch-to-zoom gesture.\n      // That said, in case it's possible to have two pointerdown events with\n      // a mouse, we don't want to create a new editor in such a case either.\n      this.#hadPointerDown = false;\n      return;\n    }\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Do nothing on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    this.#hadPointerDown = true;\n\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n\n  /**\n   *\n   * @param {AnnotationEditor} editor\n   * @param {number} x\n   * @param {number} y\n   * @returns\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\n  /**\n   * Destroy the main editor.\n   */\n  destroy() {\n    if (this.#uiManager.getActive()?.parent === this) {\n      // We need to commit the current editor before destroying the layer.\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\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\n  #cleanup() {\n    // When we're cleaning up, some editors are removed but we don't want\n    // to add a new one which will induce an addition in this.#editors, hence\n    // an infinite loop.\n    this.#isCleaningUp = true;\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n    this.#isCleaningUp = false;\n  }\n\n  /**\n   * Render the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  render({ viewport }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n    }\n    this.updateMode();\n  }\n\n  /**\n   * Update the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  update({ viewport }) {\n    // Editors have their dimensions/positions in percent so to avoid any\n    // issues (see #15582), we must commit the current one before changing\n    // the viewport.\n    this.#uiManager.commitOrRemove();\n\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n    this.viewport = viewport;\n    setLayerDimensions(this.div, { rotation });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n    this.updateMode();\n  }\n\n  /**\n   * Get page dimensions.\n   * @returns {Object} dimensions.\n   */\n  get pageDimensions() {\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2023 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\nimport { AnnotationEditorParamsType, shadow } from \"../../shared/util.js\";\nimport { KeyboardManager } from \"./tools.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass ColorPicker {\n  #boundKeyDown = this.#keyDown.bind(this);\n\n  #button = null;\n\n  #buttonSwatch = null;\n\n  #defaultColor;\n\n  #dropdown = null;\n\n  #dropdownWasFromKeyboard = false;\n\n  #isMainColorPicker = false;\n\n  #eventBus;\n\n  #uiManager = null;\n\n  static get _keyboardManager() {\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"Escape\", \"mac+Escape\"],\n          ColorPicker.prototype._hideDropdownFromKeyboard,\n        ],\n        [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard],\n        [\n          [\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"],\n          ColorPicker.prototype._moveToNext,\n        ],\n        [\n          [\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"],\n          ColorPicker.prototype._moveToPrevious,\n        ],\n        [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning],\n        [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd],\n      ])\n    );\n  }\n\n  constructor({ editor = null, uiManager = null }) {\n    this.#isMainColorPicker = !editor;\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor =\n      editor?.color ||\n      this.#uiManager?.highlightColors.values().next().value ||\n      \"#FFFF98\";\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.setAttribute(\"aria-haspopup\", true);\n    button.addEventListener(\"click\", this.#openDropdown.bind(this));\n    const swatch = (this.#buttonSwatch = document.createElement(\"span\"));\n    swatch.className = \"swatch\";\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n\n  renderMainDropdown() {\n    const dropdown = (this.#dropdown = this.#getDropdownRoot(\n      AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR\n    ));\n    dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n    dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n\n    return dropdown;\n  }\n\n  #getDropdownRoot(paramType) {\n    const div = document.createElement(\"div\");\n    div.addEventListener(\"contextmenu\", noContextMenu);\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.setAttribute(\"aria-multiselectable\", false);\n    div.setAttribute(\"aria-orientation\", \"vertical\");\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\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\", `pdfjs-editor-colorpicker-${name}`);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n      button.addEventListener(\n        \"click\",\n        this.#colorSelect.bind(this, paramType, color)\n      );\n      div.append(button);\n    }\n\n    div.addEventListener(\"keydown\", this.#boundKeyDown);\n\n    return div;\n  }\n\n  #colorSelect(type, color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type,\n      value: color,\n    });\n  }\n\n  _colorSelectFromKeyboard(event) {\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n\n  _moveToNext(event) {\n    if (event.target === this.#button) {\n      this.#dropdown.firstChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n\n  _moveToPrevious(event) {\n    event.target.previousSibling?.focus();\n  }\n\n  _moveToBeginning() {\n    this.#dropdown.firstChild?.focus();\n  }\n\n  _moveToEnd() {\n    this.#dropdown.lastChild?.focus();\n  }\n\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n\n  #openDropdown(event) {\n    if (this.#dropdown && !this.#dropdown.classList.contains(\"hidden\")) {\n      this.hideDropdown();\n      return;\n    }\n    this.#button.addEventListener(\"keydown\", this.#boundKeyDown);\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = (this.#dropdown = this.#getDropdownRoot(\n      AnnotationEditorParamsType.HIGHLIGHT_COLOR\n    ));\n    this.#button.append(root);\n  }\n\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n  }\n\n  _hideDropdownFromKeyboard() {\n    if (\n      this.#isMainColorPicker ||\n      !this.#dropdown ||\n      this.#dropdown.classList.contains(\"hidden\")\n    ) {\n      return;\n    }\n    this.hideDropdown();\n    this.#button.removeEventListener(\"keydown\", this.#boundKeyDown);\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard,\n    });\n  }\n\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.setAttribute(\"aria-selected\", i.next().value === color);\n    }\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}\n\nexport { ColorPicker };\n","/* Copyright 2023 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\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass AltText {\n  #altText = \"\";\n\n  #altTextDecorative = false;\n\n  #altTextButton = null;\n\n  #altTextTooltip = null;\n\n  #altTextTooltipTimeout = null;\n\n  #altTextWasFromKeyBoard = false;\n\n  #editor = null;\n\n  static _l10nPromise = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n  }\n\n  static initialize(l10nPromise) {\n    AltText._l10nPromise ||= l10nPromise;\n  }\n\n  async render() {\n    const altText = (this.#altTextButton = document.createElement(\"button\"));\n    altText.className = \"altText\";\n    const msg = await AltText._l10nPromise.get(\n      \"pdfjs-editor-alt-text-button-label\"\n    );\n    altText.textContent = msg;\n    altText.setAttribute(\"aria-label\", msg);\n    altText.tabIndex = \"0\";\n    altText.addEventListener(\"contextmenu\", noContextMenu);\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n    };\n    altText.addEventListener(\"click\", onClick, { capture: true });\n    altText.addEventListener(\"keydown\", event => {\n      if (event.target === altText && event.key === \"Enter\") {\n        this.#altTextWasFromKeyBoard = true;\n        onClick(event);\n      }\n    });\n    await this.#setState();\n\n    return altText;\n  }\n\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n    this.#altTextWasFromKeyBoard = false;\n  }\n\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative,\n    };\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set data({ altText, decorative }) {\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    this.#altText = altText;\n    this.#altTextDecorative = decorative;\n    this.#setState();\n  }\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\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextTooltip = null;\n  }\n\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n    if (!this.#altText && !this.#altTextDecorative) {\n      button.classList.remove(\"done\");\n      this.#altTextTooltip?.remove();\n      return;\n    }\n    button.classList.add(\"done\");\n\n    AltText._l10nPromise\n      .get(\"pdfjs-editor-alt-text-edit-button-label\")\n      .then(msg => {\n        button.setAttribute(\"aria-label\", msg);\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      const id = (tooltip.id = `alt-text-tooltip-${this.#editor.id}`);\n      button.setAttribute(\"aria-describedby\", id);\n\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      button.addEventListener(\"mouseenter\", () => {\n        this.#altTextTooltipTimeout = setTimeout(() => {\n          this.#altTextTooltipTimeout = null;\n          this.#altTextTooltip.classList.add(\"show\");\n          this.#editor._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n            source: this,\n            details: {\n              type: \"editing\",\n              subtype: this.#editor.editorType,\n              data: {\n                action: \"alt_text_tooltip\",\n              },\n            },\n          });\n        }, DELAY_TO_SHOW_TOOLTIP);\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    }\n    tooltip.innerText = this.#altTextDecorative\n      ? await AltText._l10nPromise.get(\n          \"pdfjs-editor-alt-text-decorative-tooltip\"\n        )\n      : this.#altText;\n\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n\n    const element = this.#editor.getImageForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\nexport { AltText };\n","/* Copyright 2023 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\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass EditorToolbar {\n  #toolbar = null;\n\n  #colorPicker = null;\n\n  #editor;\n\n  #buttons = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n  }\n\n  render() {\n    const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n    editToolbar.className = \"editToolbar\";\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu);\n    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown);\n\n    const buttons = (this.#buttons = document.createElement(\"div\"));\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const { style } = editToolbar;\n      const x =\n        this.#editor._uiManager.direction === \"ltr\"\n          ? 1 - position[0]\n          : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${\n        100 * position[1]\n      }% + var(--editor-toolbar-vert-offset))`;\n    }\n\n    this.#addDeleteButton();\n\n    return editToolbar;\n  }\n\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    e.preventDefault();\n    e.stopPropagation();\n  }\n\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    e.preventDefault();\n    e.stopPropagation();\n  }\n\n  #addListenersToElement(element) {\n    // If we're clicking on a button with the keyboard or with\n    // the mouse, we don't want to trigger any focus events on\n    // the editor.\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu);\n  }\n\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n  }\n\n  #addDeleteButton() {\n    const button = document.createElement(\"button\");\n    button.className = \"delete\";\n    button.tabIndex = 0;\n    button.setAttribute(\n      \"data-l10n-id\",\n      `pdfjs-editor-remove-${this.#editor.editorType}-button`\n    );\n    this.#addListenersToElement(button);\n    button.addEventListener(\"click\", e => {\n      this.#editor._uiManager.delete();\n    });\n    this.#buttons.append(button);\n  }\n\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n\n  addAltTextButton(button) {\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n\n  addColorPicker(colorPicker) {\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\n\nexport { EditorToolbar };\n","/* Copyright 2022 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  KeyboardManager,\n} from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\nimport { AltText } from \"./alt_text.js\";\nimport { EditorToolbar } from \"./toolbar.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n  #allResizerDivs = null;\n\n  #altText = null;\n\n  #keepAspectRatio = false;\n\n  #resizersDiv = null;\n\n  #savedDimensions = null;\n\n  #boundFocusin = this.focusin.bind(this);\n\n  #boundFocusout = this.focusout.bind(this);\n\n  #editToolbar = null;\n\n  #focusedResizerName = \"\";\n\n  #hasBeenClicked = false;\n\n  #isEditing = false;\n\n  #isInEditMode = false;\n\n  #isResizerEnabledForKeyboard = false;\n\n  #moveInDOMTimeout = null;\n\n  _initialOptions = Object.create(null);\n\n  _uiManager = null;\n\n  _focusEventsAllowed = true;\n\n  _l10nPromise = null;\n\n  #isDraggable = false;\n\n  #zIndex = AnnotationEditor._zIndex++;\n\n  static _borderLineWidth = -1;\n\n  static _colorManager = new ColorManager();\n\n  static _zIndex = 1;\n\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_resizerKeyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          resize,\n          { args: [-big, 0] },\n        ],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          resize,\n          { args: [big, 0] },\n        ],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n        [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n        [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n        [\n          [\"Escape\", \"mac+Escape\"],\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * @param {AnnotationEditorParameters} parameters\n   */\n  constructor(parameters) {\n    if (this.constructor === AnnotationEditor) {\n      unreachable(\"Cannot initialize AnnotationEditor.\");\n    }\n\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\n    const {\n      rotation,\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = this.parent.viewport;\n\n    this.rotation = rotation;\n    this.pageRotation =\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n\n  static get _defaultLineColor() {\n    return shadow(\n      this,\n      \"_defaultLineColor\",\n      this._colorManager.getHexCode(\"CanvasText\")\n    );\n  }\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\n  /**\n   * Initialize the l10n stuff for this type of editor.\n   * @param {Object} l10n\n   */\n  static initialize(l10n, options = null) {\n    AnnotationEditor._l10nPromise ||= new Map(\n      [\n        \"pdfjs-editor-alt-text-button-label\",\n        \"pdfjs-editor-alt-text-edit-button-label\",\n        \"pdfjs-editor-alt-text-decorative-tooltip\",\n        \"pdfjs-editor-resizer-label-topLeft\",\n        \"pdfjs-editor-resizer-label-topMiddle\",\n        \"pdfjs-editor-resizer-label-topRight\",\n        \"pdfjs-editor-resizer-label-middleRight\",\n        \"pdfjs-editor-resizer-label-bottomRight\",\n        \"pdfjs-editor-resizer-label-bottomMiddle\",\n        \"pdfjs-editor-resizer-label-bottomLeft\",\n        \"pdfjs-editor-resizer-label-middleLeft\",\n      ].map(str => [\n        str,\n        l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`)),\n      ])\n    );\n    if (options?.strings) {\n      for (const str of options.strings) {\n        AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n      }\n    }\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth =\n      parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n\n  /**\n   * Update the default parameters for this type of editor.\n   * @param {number} _type\n   * @param {*} _value\n   */\n  static updateDefaultParams(_type, _value) {}\n\n  /**\n   * Get the default properties to set in the UI for this type of editor.\n   * @returns {Array}\n   */\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n\n  /**\n   * Check if this kind of editor is able to handle the given mime type for\n   * pasting.\n   * @param {string} mime\n   * @returns {boolean}\n   */\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n\n  /**\n   * Extract the data from the clipboard item and delegate the creation of the\n   * editor to the parent.\n   * @param {DataTransferItem} item\n   * @param {AnnotationEditorLayer} parent\n   */\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * Get the properties to update in the UI for this editor.\n   * @returns {Array}\n   */\n  get propertiesToUpdate() {\n    return [];\n  }\n\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n\n  /**\n   * @returns {boolean} true if the editor handles the Enter key itself.\n   */\n  get isEnterHandled() {\n    return true;\n  }\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\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n\n  /**\n   * This editor will be behind the others.\n   */\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n\n  /**\n   * This editor will be in the foreground.\n   */\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      // The editor is being removed from the DOM, so we need to stop resizing.\n      this.#stopResizing();\n    }\n    this.parent = parent;\n  }\n\n  /**\n   * onfocus callback.\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\n  /**\n   * onblur callback.\n   * @param {FocusEvent} event\n   */\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n\n    // In case of focusout, the relatedTarget is the element which\n    // is grabbing the focus.\n    // So if the related target is an element under the div for this\n    // editor, then the editor isn't unactive.\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n\n  /**\n   * Commit the data contained in this editor.\n   */\n  commit() {\n    this.addToAnnotationStorage();\n  }\n\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n\n  /**\n   * Set the editor position within its parent.\n   * @param {number} x\n   * @param {number} y\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   */\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n\n    this.fixAndSetPosition();\n  }\n\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n\n    this.x += x / width;\n    this.y += y / height;\n\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Translate the editor position within its parent.\n   * @param {number} x - x-translation in screen coordinates.\n   * @param {number} y - y-translation in screen coordinates.\n   */\n  translate(x, y) {\n    this.#translate(this.parentDimensions, x, y);\n  }\n\n  /**\n   * Translate the editor position within its page and adjust the scroll\n   * in order to have the editor in the view.\n   * @param {number} x - x-translation in page coordinates.\n   * @param {number} y - y-translation in page coordinates.\n   */\n  translateInPage(x, y) {\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  drag(tx, ty) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\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      // It's possible to not have a parent: for example, when the user is\n      // dragging all the selected editors but this one on a page which has been\n      // destroyed.\n      // It's why we need to check for it. In such a situation, it isn't really\n      // a problem to not find a new parent: it's something which is related to\n      // what the user is seeing, hence it depends on how pages are layed out.\n\n      // The element will be outside of its parent so change the parent.\n      const { x, y } = 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\n    // The editor can be moved wherever the user wants, so we don't need to fix\n    // the position: it'll be done when the user will release the mouse button.\n\n    let { x, y } = this;\n    const [bx, by] = this.#getBaseTranslation();\n    x += bx;\n    y += by;\n\n    this.div.style.left = `${(100 * x).toFixed(2)}%`;\n    this.div.style.top = `${(100 * y).toFixed(2)}%`;\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  #getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { _borderLineWidth } = 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\n  /**\n   * Fix the position of the editor in order to keep it inside its parent page.\n   * @param {number} [rotation] - the rotation of the page.\n   */\n  fixAndSetPosition(rotation = this.rotation) {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    let { x, y, width, height } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n\n    switch (rotation) {\n      case 0:\n        x = Math.max(0, Math.min(pageWidth - width, x));\n        y = Math.max(0, Math.min(pageHeight - height, y));\n        break;\n      case 90:\n        x = Math.max(0, Math.min(pageWidth - height, x));\n        y = Math.min(pageHeight, Math.max(width, y));\n        break;\n      case 180:\n        x = Math.min(pageWidth, Math.max(width, x));\n        y = Math.min(pageHeight, Math.max(height, y));\n        break;\n      case 270:\n        x = Math.min(pageWidth, Math.max(height, x));\n        y = Math.max(0, Math.min(pageHeight - width, y));\n        break;\n    }\n\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n\n    const [bx, by] = this.#getBaseTranslation();\n    x += bx;\n    y += by;\n\n    const { style } = this.div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this.moveInDOM();\n  }\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\n  /**\n   * Convert a screen translation into a page one.\n   * @param {number} x\n   * @param {number} y\n   */\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n\n  /**\n   * Convert a page translation into a screen one.\n   * @param {number} x\n   * @param {number} y\n   */\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90: {\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        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\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    const scaledWidth = pageWidth * parentScale;\n    const scaledHeight = pageHeight * parentScale;\n    return FeatureTest.isCSSRoundSupported\n      ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n      : [scaledWidth, scaledHeight];\n  }\n\n  /**\n   * Set the dimensions of this editor.\n   * @param {number} width\n   * @param {number} height\n   */\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n    if (!this.#keepAspectRatio) {\n      this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n    }\n  }\n\n  fixDims() {\n    const { style } = this.div;\n    const { height, width } = style;\n    const widthPercent = width.endsWith(\"%\");\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n    if (widthPercent && heightPercent) {\n      return;\n    }\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (!widthPercent) {\n      style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`;\n    }\n    if (!this.#keepAspectRatio && !heightPercent) {\n      style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(\n        2\n      )}%`;\n    }\n  }\n\n  /**\n   * Get the translation used to position this editor when it's created.\n   * @returns {Array<number>}\n   */\n  getInitialTranslation() {\n    return [0, 0];\n  }\n\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    // When the resizers are used with the keyboard, they're focusable, hence\n    // we want to have them in this order (top left, top middle, top right, ...)\n    // in the DOM to have the focus order correct.\n    const classes = this._willKeepAspectRatio\n      ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n      : [\n          \"topLeft\",\n          \"topMiddle\",\n          \"topRight\",\n          \"middleRight\",\n          \"bottomRight\",\n          \"bottomMiddle\",\n          \"bottomLeft\",\n          \"middleLeft\",\n        ];\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(\n        \"pointerdown\",\n        this.#resizerPointerdown.bind(this, name)\n      );\n      div.addEventListener(\"contextmenu\", noContextMenu);\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      return;\n    }\n\n    this.#altText?.toggle(false);\n\n    const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    const pointerMoveOptions = { passive: true, capture: true };\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\n      \"pointermove\",\n      boundResizerPointermove,\n      pointerMoveOptions\n    );\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\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 =\n      window.getComputedStyle(event.target).cursor;\n\n    const pointerUpCallback = () => {\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      window.removeEventListener(\"pointerup\", pointerUpCallback);\n      window.removeEventListener(\"blur\", pointerUpCallback);\n      window.removeEventListener(\n        \"pointermove\",\n        boundResizerPointermove,\n        pointerMoveOptions\n      );\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback);\n    // If the user switches to another window (with alt+tab), then we end the\n    // resize session.\n    window.addEventListener(\"blur\", pointerUpCallback);\n  }\n\n  #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (\n      newX === savedX &&\n      newY === savedY &&\n      newWidth === savedWidth &&\n      newHeight === savedHeight\n    ) {\n      return;\n    }\n\n    this.addCommands({\n      cmd: () => {\n        this.width = newWidth;\n        this.height = newHeight;\n        this.x = newX;\n        this.y = newY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n        this.fixAndSetPosition();\n      },\n      undo: () => {\n        this.width = savedWidth;\n        this.height = savedHeight;\n        this.x = savedX;\n        this.y = savedY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n        this.fixAndSetPosition();\n      },\n      mustExec: true,\n    });\n  }\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\n    // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n    // Without rounding, the positions of the corners other than the top left\n    // one can be slightly wrong.\n    const round = x => Math.round(x * 10000) / 10000;\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n    ];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n\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\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = round(savedX + transfOppositePoint[0]);\n    const oppositeY = round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n\n    let [deltaX, deltaY] = this.screenToPageTranslation(\n      event.movementX,\n      event.movementY\n    );\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(\n        Math.min(\n          Math.hypot(\n            oppositePoint[0] - point[0] - deltaX,\n            oppositePoint[1] - point[1] - deltaY\n          ) / oldDiag,\n          // Avoid the editor to be larger than the page.\n          1 / savedWidth,\n          1 / savedHeight\n        ),\n        // Avoid the editor to be smaller than the minimum size.\n        minWidth / savedWidth,\n        minHeight / savedHeight\n      );\n    } else if (isHorizontal) {\n      ratioX =\n        Math.max(\n          minWidth,\n          Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n        ) / savedWidth;\n    } else {\n      ratioY =\n        Math.max(\n          minHeight,\n          Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n        ) / savedHeight;\n    }\n\n    const newWidth = round(savedWidth * ratioX);\n    const newHeight = round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n  }\n\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n\n  /**\n   * Add a toolbar for this editor.\n   * @returns {Promise<EditorToolbar|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    if (this.#altText) {\n      this.#editToolbar.addAltTextButton(await this.#altText.render());\n    }\n\n    return this.#editToolbar;\n  }\n\n  removeEditToolbar() {\n    if (!this.#editToolbar) {\n      return;\n    }\n    this.#editToolbar.remove();\n    this.#editToolbar = null;\n\n    // We destroy the alt text but we don't null it because we want to be able\n    // to restore it in case the user undoes the deletion.\n    this.#altText?.destroy();\n  }\n\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n\n  async addAltTextButton() {\n    if (this.#altText) {\n      return;\n    }\n    AltText.initialize(AnnotationEditor._l10nPromise);\n    this.#altText = new AltText(this);\n    await this.addEditToolbar();\n  }\n\n  get altTextData() {\n    return this.#altText?.data;\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n\n  /**\n   * Render this editor in a div.\n   * @returns {HTMLDivElement | null}\n   */\n  render() {\n    this.div = document.createElement(\"div\");\n    this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    this.div.className = this.name;\n    this.div.setAttribute(\"id\", this.id);\n    this.div.setAttribute(\"tabIndex\", 0);\n\n    this.setInForeground();\n\n    this.div.addEventListener(\"focusin\", this.#boundFocusin);\n    this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n        2\n      )}%`;\n      this.div.style.maxHeight = `${(\n        (100 * parentWidth) /\n        parentHeight\n      ).toFixed(2)}%`;\n    }\n\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n\n    bindEvents(this, this.div, [\"pointerdown\"]);\n\n    return this.div;\n  }\n\n  /**\n   * Onpointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Avoid to focus this editor because of a non-left click.\n      event.preventDefault();\n      return;\n    }\n\n    this.#hasBeenClicked = true;\n\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n\n    this.#selectOnPointerEvent(event);\n  }\n\n  #selectOnPointerEvent(event) {\n    const { isMac } = FeatureTest.platform;\n    if (\n      (event.ctrlKey && !isMac) ||\n      event.shiftKey ||\n      (event.metaKey && isMac)\n    ) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n\n  #setUpDragSession(event) {\n    const isSelected = this._uiManager.isSelected(this);\n    this._uiManager.setUpDragSession();\n\n    let pointerMoveOptions, pointerMoveCallback;\n    if (isSelected) {\n      pointerMoveOptions = { passive: true, capture: true };\n      pointerMoveCallback = e => {\n        const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);\n        this._uiManager.dragSelectedEditors(tx, ty);\n      };\n      window.addEventListener(\n        \"pointermove\",\n        pointerMoveCallback,\n        pointerMoveOptions\n      );\n    }\n\n    const pointerUpCallback = () => {\n      window.removeEventListener(\"pointerup\", pointerUpCallback);\n      window.removeEventListener(\"blur\", pointerUpCallback);\n      if (isSelected) {\n        window.removeEventListener(\n          \"pointermove\",\n          pointerMoveCallback,\n          pointerMoveOptions\n        );\n      }\n\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(event);\n      }\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback);\n    // If the user is using alt+tab during the dragging session, the pointerup\n    // event could be not fired, but a blur event is fired so we can use it in\n    // order to interrupt the dragging session.\n    window.addEventListener(\"blur\", pointerUpCallback);\n  }\n\n  moveInDOM() {\n    // Moving the editor in the DOM can be expensive, so we wait a bit before.\n    // It's important to not block the UI (for example when changing the font\n    // size in a FreeText).\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\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Convert the current rect into a page one.\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   * @param {number} [rotation] - the rotation of the page.\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\n    switch (rotation) {\n      case 0:\n        return [\n          x + shiftX + pageX,\n          pageHeight - y - shiftY - height + pageY,\n          x + shiftX + width + pageX,\n          pageHeight - y - shiftY + pageY,\n        ];\n      case 90:\n        return [\n          x + shiftY + pageX,\n          pageHeight - y + shiftX + pageY,\n          x + shiftY + height + pageX,\n          pageHeight - y + shiftX + width + pageY,\n        ];\n      case 180:\n        return [\n          x - shiftX - width + pageX,\n          pageHeight - y + shiftY + pageY,\n          x - shiftX + pageX,\n          pageHeight - y + shiftY + height + pageY,\n        ];\n      case 270:\n        return [\n          x - shiftY - height + pageX,\n          pageHeight - y - shiftX - width + pageY,\n          x - shiftY + pageX,\n          pageHeight - y - shiftX + pageY,\n        ];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n\n    const width = x2 - x1;\n    const height = y2 - y1;\n\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\n  /**\n   * Executed once this editor has been rendered.\n   */\n  onceAdded() {}\n\n  /**\n   * Check if the editor contains something.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return false;\n  }\n\n  /**\n   * Enable edit mode.\n   */\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n\n  /**\n   * Disable edit mode.\n   */\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n\n  /**\n   * Check if the editor is edited.\n   * @returns {boolean}\n   */\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n\n  /**\n   * If it returns true, then this editor handles the keyboard\n   * events itself.\n   * @returns {boolean}\n   */\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n\n  /**\n   * Check if this editor needs to be rebuilt or not.\n   * @returns {boolean}\n   */\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n\n  /**\n   * Rebuild the editor in case it has been removed on undo.\n   *\n   * To implement in subclasses.\n   */\n  rebuild() {\n    this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n    this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n  }\n\n  /**\n   * Rotate the editor.\n   * @param {number} angle\n   */\n  rotate(_angle) {}\n\n  /**\n   * Serialize the editor.\n   * The result of the serialization will be used to construct a\n   * new annotation to add to the pdf document.\n   *\n   * To implement in subclasses.\n   * @param {boolean} [isForCopying]\n   * @param {Object | null} [context]\n   * @returns {Object | null}\n   */\n  serialize(isForCopying = false, context = null) {\n    unreachable(\"An editor must be serializable\");\n  }\n\n  /**\n   * Deserialize the editor.\n   * The result of the deserialization is a new editor.\n   *\n   * @param {Object} data\n   * @param {AnnotationEditorLayer} parent\n   * @param {AnnotationEditorUIManager} uiManager\n   * @returns {AnnotationEditor | null}\n   */\n  static deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager,\n    });\n    editor.rotation = data.rotation;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\n      data.rect,\n      pageHeight\n    );\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n\n    return editor;\n  }\n\n  /**\n   * Remove this editor.\n   * It's used on ctrl+backspace action.\n   */\n  remove() {\n    this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n    this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n    if (!this.isEmpty()) {\n      // The editor is removed but it can be back at some point thanks to\n      // undo/redo so we must commit it before.\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n  }\n\n  /**\n   * @returns {boolean} true if this editor can be resized.\n   */\n  get isResizable() {\n    return false;\n  }\n\n  /**\n   * Add the resizers to this editor.\n   */\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n      bindEvents(this, this.div, [\"keydown\"]);\n    }\n  }\n\n  get toolbarPosition() {\n    return null;\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (\n      !this.isResizable ||\n      event.target !== this.div ||\n      event.key !== \"Enter\"\n    ) {\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      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        div.addEventListener(\"blur\", boundResizerBlur);\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n        AnnotationEditor._l10nPromise\n          .get(`pdfjs-editor-resizer-label-${name}`)\n          .then(msg => div.setAttribute(\"aria-label\", msg));\n      }\n    }\n\n    // We want to have the resizers in the visual order, so we move the first\n    // (top-left) to the right place.\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 =\n      (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n      (this.#allResizerDivs.length / 4);\n\n    if (nextFirstPosition !== firstPosition) {\n      // We need to reorder the resizers in the DOM in order to have the focus\n      // on the top-left one.\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\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        AnnotationEditor._l10nPromise\n          .get(`pdfjs-editor-resizer-label-${name}`)\n          .then(msg => child.setAttribute(\"aria-label\", msg));\n      }\n    }\n\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({ focusVisible: true });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n\n  #resizerBlur(event) {\n    if (\n      this.#isResizerEnabledForKeyboard &&\n      event.relatedTarget?.parentNode !== this.#resizersDiv\n    ) {\n      this.#stopResizing();\n    }\n  }\n\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\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\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      movementX: x,\n      movementY: y,\n    });\n  }\n\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    if (this.#savedDimensions) {\n      const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n      this.#savedDimensions = null;\n    }\n  }\n\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n\n  /**\n   * Select this editor.\n   */\n  select() {\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          // The editor can have been unselected while we were waiting for the\n          // edit toolbar to be created, hence we want to be sure that this\n          // editor is still selected.\n          this.#editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this.#editToolbar?.show();\n  }\n\n  /**\n   * Unselect this editor.\n   */\n  unselect() {\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      // Don't use this.div.blur() because we don't know where the focus will\n      // go.\n      this._uiManager.currentLayer.div.focus();\n    }\n    this.#editToolbar?.hide();\n  }\n\n  /**\n   * Update some parameters which have been changed through the UI.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {}\n\n  /**\n   * When the user disables the editing mode some editors can change some of\n   * their properties.\n   */\n  disableEditing() {}\n\n  /**\n   * When the user enables the editing mode some editors can change some of\n   * their properties.\n   */\n  enableEditing() {}\n\n  /**\n   * The editor is about to be edited.\n   */\n  enterInEditMode() {}\n\n  /**\n   * @returns {HTMLElement | null} the element requiring an alt text.\n   */\n  getImageForAltText() {\n    return null;\n  }\n\n  /**\n   * Get the div which really contains the displayed content.\n   * @returns {HTMLDivElement | undefined}\n   */\n  get contentDiv() {\n    return this.div;\n  }\n\n  /**\n   * If true then the editor is currently edited.\n   * @type {boolean}\n   */\n  get isEditing() {\n    return this.#isEditing;\n  }\n\n  /**\n   * When set to true, it means that this editor is currently edited.\n   * @param {boolean} value\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\n  /**\n   * Set the aspect ratio to use when resizing.\n   * @param {number} width\n   * @param {number} height\n   */\n  setAspectRatio(width, height) {\n    this.#keepAspectRatio = true;\n    const aspectRatio = width / height;\n    const { style } = this.div;\n    style.aspectRatio = aspectRatio;\n    style.height = \"auto\";\n  }\n\n  static get MIN_SIZE() {\n    return 16;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n\n  serialize() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n    };\n  }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2023 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\nclass Outliner {\n  #box;\n\n  #verticalEdges = [];\n\n  #intervals = [];\n\n  /**\n   * Construct an outliner.\n   * @param {Array<Object>} boxes - An array of axis-aligned rectangles.\n   * @param {number} borderWidth - The width of the border of the boxes, it\n   *   allows to make the boxes bigger (or smaller).\n   * @param {number} innerMargin - The margin between the boxes and the\n   *   outlines. It's important to not have a null innerMargin when we want to\n   *   draw the outline else the stroked outline could be clipped because of its\n   *   width.\n   * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n   *   the last point of the boxes.\n   */\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n\n    // We round the coordinates to slightly reduce the number of edges in the\n    // final outlines.\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n\n    // The coordinates of the boxes are in the page coordinate system.\n    for (const { x, y, width, height } 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\n      minX = Math.min(minX, x1);\n      maxX = Math.max(maxX, x2);\n      minY = Math.min(minY, y1);\n      maxY = Math.max(maxY, y2);\n    }\n\n    const bboxWidth = maxX - minX + 2 * innerMargin;\n    const bboxHeight = maxY - minY + 2 * innerMargin;\n    const shiftedMinX = minX - innerMargin;\n    const shiftedMinY = minY - innerMargin;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n\n    // Convert the coordinates of the edges into box coordinates.\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2] = edge;\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n\n    this.#box = {\n      x: shiftedMinX,\n      y: shiftedMinY,\n      width: bboxWidth,\n      height: bboxHeight,\n      lastPoint,\n    };\n  }\n\n  getOutlines() {\n    // We begin to sort lexicographically the vertical edges by their abscissa,\n    // and then by their ordinate.\n    this.#verticalEdges.sort(\n      (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\n    );\n\n    // We're now using a sweep line algorithm to find the outlines.\n    // We start with the leftmost vertical edge, and we're going to iterate\n    // over all the vertical edges from left to right.\n    // Each time we encounter a left edge, we're going to insert the interval\n    // [y1, y2] in the set of intervals.\n    // This set of intervals is used to break the vertical edges into chunks:\n    // we only take the part of the vertical edge that isn't in the union of\n    // the intervals.\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        // Left edge.\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        // Right edge.\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n\n    // We sort lexicographically the vertices of each edge by their ordinate and\n    // by their abscissa.\n    // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n    // So for every vertical edge, we're going to add the two vertical edges\n    // which are connected to it through a horizontal edge.\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\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\n      outline = [x, y2];\n      outlines.push(outline);\n\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\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n\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 { outlines, box: this.#box };\n  }\n\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n\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\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\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\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          // There is no intersection between the interval and the edge, hence\n          // we keep it as is.\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            // The edge is included in the interval, hence we remove it.\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}\n\nexport { Outliner };\n","/* Copyright 2022 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\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n  getUuid,\n  shadow,\n  Util,\n  warn,\n} from \"../../shared/util.js\";\nimport {\n  fetchData,\n  getColorValues,\n  getRGB,\n  PixelsPerInch,\n} from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n  #id = 0;\n\n  /**\n   * Get a unique id.\n   * @returns {string}\n   */\n  getId() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n  #baseId = getUuid();\n\n  #id = 0;\n\n  #cache = null;\n\n  static get _isSVGFittingCanvas() {\n    // By default, Firefox doesn't rescale without preserving the aspect ratio\n    // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n    // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n    // url, but according to comment #15, it seems that it leads to unexpected\n    // behavior in Safari.\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    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\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      // We already tried to load the image but it failed.\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 {\n        image = data.file = rawData;\n      }\n\n      if (image.type === \"image/svg+xml\") {\n        // Unfortunately, createImageBitmap doesn't work with SVG images.\n        // (see https://bugzilla.mozilla.org/1841972).\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            // We need to set the preserveAspectRatio to none in order to let\n            // the image fits the canvas when resizing.\n            imageElement.src = (await mustRemoveAspectRatioPromise)\n              ? `${url}#svgView(preserveAspectRatio(none))`\n              : 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      console.error(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\n  async getFromFile(file) {\n    const { lastModified, name, size, type } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\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\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    return this.getFromUrl(data.url);\n  }\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\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    data.bitmap = null;\n  }\n\n  // We can use the id only if it belongs this manager.\n  // We must take care of having the right manager because we can copy/paste\n  // some images from other documents, hence it'd be a pity to use an id from an\n  // other manager.\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n  #commands = [];\n\n  #locked = false;\n\n  #maxSize;\n\n  #position = -1;\n\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n\n  /**\n   * @typedef {Object} addOptions\n   * @property {function} cmd\n   * @property {function} undo\n   * @property {boolean} mustExec\n   * @property {number} type\n   * @property {boolean} overwriteIfSameType\n   * @property {boolean} keepUndo\n   */\n\n  /**\n   * Add a new couple of commands to be used in case of redo/undo.\n   * @param {addOptions} options\n   */\n  add({\n    cmd,\n    undo,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false,\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n\n    if (this.#locked) {\n      return;\n    }\n\n    const save = { cmd, undo, type };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        // All the commands have been undone and then a new one is added\n        // hence we clear the queue.\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      // For example when we change a color we don't want to\n      // be able to undo all the steps, hence we only want to\n      // keep the last undoable action in this sequence of actions.\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\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\n    this.#commands.push(save);\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    if (this.#position === -1) {\n      // Nothing to undo.\n      return;\n    }\n\n    // Avoid to insert something during the undo execution.\n    this.#locked = true;\n    this.#commands[this.#position].undo();\n    this.#locked = false;\n\n    this.#position -= 1;\n  }\n\n  /**\n   * Redo the last command.\n   */\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n\n      // Avoid to insert something during the redo execution.\n      this.#locked = true;\n      this.#commands[this.#position].cmd();\n      this.#locked = false;\n    }\n  }\n\n  /**\n   * Check if there is something to undo.\n   * @returns {boolean}\n   */\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n\n  /**\n   * Check if there is something to redo.\n   * @returns {boolean}\n   */\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n\n  destroy() {\n    this.#commands = null;\n  }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n  /**\n   * Create a new keyboard manager class.\n   * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n   * and a callback to call.\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n   */\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n\n    const { isMac } = 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), { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n\n  /**\n   * Serialize an event into a string in order to match a\n   * potential key for a callback.\n   * @param {KeyboardEvent} event\n   * @returns {string}\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\n    return str;\n  }\n\n  /**\n   * Execute a callback, if any, for a given keyboard event.\n   * The self is used as `this` in the callback.\n   * @param {Object} self\n   * @param {KeyboardEvent} event\n   * @returns\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: { bubbles = false, args = [], checker = null },\n    } = info;\n\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n\n    // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n    // the event must bubble.\n    if (!bubbles) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n}\n\nclass ColorManager {\n  static _colorsMapping = new Map([\n    [\"CanvasText\", [0, 0, 0]],\n    [\"Canvas\", [255, 255, 255]],\n  ]);\n\n  get _colors() {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"LIB\") &&\n      typeof document === \"undefined\"\n    ) {\n      return shadow(this, \"_colors\", ColorManager._colorsMapping);\n    }\n\n    const colors = new Map([\n      [\"CanvasText\", null],\n      [\"Canvas\", null],\n    ]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n\n  /**\n   * In High Contrast Mode, the color on the screen is not always the\n   * real color used in the pdf.\n   * For example in some cases white can appear to be black but when saving\n   * we want to have white.\n   * @param {string} color\n   * @returns {Array<number>}\n   */\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\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\n  /**\n   * An input element must have its color value as a hex string\n   * and not as color name.\n   * So this function converts a name into an hex string.\n   * @param {string} name\n   * @returns {string}\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}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n  #activeEditor = null;\n\n  #allEditors = new Map();\n\n  #allLayers = new Map();\n\n  #altTextManager = null;\n\n  #annotationStorage = null;\n\n  #commandManager = new CommandManager();\n\n  #currentPageIndex = 0;\n\n  #deletedAnnotationsElementIds = new Set();\n\n  #draggingEditors = null;\n\n  #editorTypes = null;\n\n  #editorsToRescale = new Set();\n\n  #filterFactory = null;\n\n  #focusMainContainerTimeoutId = null;\n\n  #highlightColors = null;\n\n  #idManager = new IdManager();\n\n  #isEnabled = false;\n\n  #isWaiting = false;\n\n  #lastActiveElement = null;\n\n  #mainHighlightColorPicker = null;\n\n  #mode = AnnotationEditorType.NONE;\n\n  #selectedEditors = new Set();\n\n  #pageColors = null;\n\n  #boundBlur = this.blur.bind(this);\n\n  #boundFocus = this.focus.bind(this);\n\n  #boundCopy = this.copy.bind(this);\n\n  #boundCut = this.cut.bind(this);\n\n  #boundPaste = this.paste.bind(this);\n\n  #boundKeydown = this.keydown.bind(this);\n\n  #boundOnEditingAction = this.onEditingAction.bind(this);\n\n  #boundOnPageChanging = this.onPageChanging.bind(this);\n\n  #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n  #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n  };\n\n  #translation = [0, 0];\n\n  #translationTimeoutId = null;\n\n  #container = null;\n\n  #viewer = null;\n\n  static TRANSLATE_SMALL = 1; // page units.\n\n  static TRANSLATE_BIG = 10; // page units.\n\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n\n    const arrowChecker = self => {\n      // If the focused element is an input, we don't want to handle the arrow.\n      // For example, sliders can be controlled with the arrow keys.\n      return (\n        self.#container.contains(document.activeElement) &&\n        document.activeElement.tagName !== \"BUTTON\" &&\n        self.hasSomethingToControl()\n      );\n    };\n\n    const textInputChecker = (_self, { target: el }) => {\n      if (el instanceof HTMLInputElement) {\n        const { type } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"ctrl+a\", \"mac+meta+a\"],\n          proto.selectAll,\n          { checker: textInputChecker },\n        ],\n        [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n        [\n          // On mac, depending of the OS version, the event.key is either \"z\" or\n          // \"Z\" when the user presses \"meta+shift+z\".\n          [\n            \"ctrl+y\",\n            \"ctrl+shift+z\",\n            \"mac+meta+shift+z\",\n            \"ctrl+shift+Z\",\n            \"mac+meta+shift+Z\",\n          ],\n          proto.redo,\n          { checker: textInputChecker },\n        ],\n        [\n          [\n            \"Backspace\",\n            \"alt+Backspace\",\n            \"ctrl+Backspace\",\n            \"shift+Backspace\",\n            \"mac+Backspace\",\n            \"mac+alt+Backspace\",\n            \"mac+ctrl+Backspace\",\n            \"Delete\",\n            \"ctrl+Delete\",\n            \"shift+Delete\",\n            \"mac+Delete\",\n          ],\n          proto.delete,\n          { checker: textInputChecker },\n        ],\n        [\n          [\"Enter\", \"mac+Enter\"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: (self, { target: el }) =>\n              !(el instanceof HTMLButtonElement) &&\n              self.#container.contains(el) &&\n              !self.isEnterHandled,\n          },\n        ],\n        [\n          [\" \", \"mac+ \"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: self => self.#container.contains(document.activeElement),\n          },\n        ],\n        [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  constructor(\n    container,\n    viewer,\n    altTextManager,\n    eventBus,\n    pdfDocument,\n    pageColors,\n    highlightColors\n  ) {\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#altTextManager = altTextManager;\n    this._eventBus = eventBus;\n    this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n    this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n    this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n    this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0,\n    };\n  }\n\n  destroy() {\n    this.#removeKeyboardManager();\n    this.#removeFocusManager();\n    this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n    this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n    this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n    this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\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.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager?.destroy();\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  }\n\n  get hcmFilter() {\n    return shadow(\n      this,\n      \"hcmFilter\",\n      this.#pageColors\n        ? this.#filterFactory.addHCMFilter(\n            this.#pageColors.foreground,\n            this.#pageColors.background\n          )\n        : \"none\"\n    );\n  }\n\n  get direction() {\n    return shadow(\n      this,\n      \"direction\",\n      getComputedStyle(this.#container).direction\n    );\n  }\n\n  get highlightColors() {\n    return shadow(\n      this,\n      \"highlightColors\",\n      this.#highlightColors\n        ? new Map(\n            this.#highlightColors\n              .split(\",\")\n              .map(pair => pair.split(\"=\").map(x => x.trim()))\n          )\n        : null\n    );\n  }\n\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n\n  editAltText(editor) {\n    this.#altTextManager?.editAltText(this, editor);\n  }\n\n  onPageChanging({ pageNumber }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n\n  focusMainContainer() {\n    this.#container.focus();\n  }\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 (\n        x >= layerX &&\n        x <= layerX + width &&\n        y >= layerY &&\n        y <= layerY + height\n      ) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n\n  onScaleChanging({ scale }) {\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  }\n\n  onRotationChanging({ pagesRotation }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n\n  /**\n   * Add an editor in the annotation storage.\n   * @param {AnnotationEditor} editor\n   */\n  addToAnnotationStorage(editor) {\n    if (\n      !editor.isEmpty() &&\n      this.#annotationStorage &&\n      !this.#annotationStorage.has(editor.id)\n    ) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n\n  #addFocusManager() {\n    window.addEventListener(\"focus\", this.#boundFocus);\n    window.addEventListener(\"blur\", this.#boundBlur);\n  }\n\n  #removeFocusManager() {\n    window.removeEventListener(\"focus\", this.#boundFocus);\n    window.removeEventListener(\"blur\", this.#boundBlur);\n  }\n\n  blur() {\n    if (!this.hasSelection) {\n      return;\n    }\n    // When several editors are selected and the window loses focus, we want to\n    // keep the last active element in order to be able to focus it again when\n    // the window gets the focus back but we don't want to trigger any focus\n    // callbacks else only one editor will be selected.\n    const { activeElement } = 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\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\n      \"focusin\",\n      () => {\n        lastEditor._focusEventsAllowed = true;\n      },\n      { once: true }\n    );\n    lastActiveElement.focus();\n  }\n\n  #addKeyboardManager() {\n    // The keyboard events are caught at the container level in order to be able\n    // to execute some callbacks even if the current page doesn't have focus.\n    window.addEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  #removeKeyboardManager() {\n    window.removeEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  #addCopyPasteListeners() {\n    document.addEventListener(\"copy\", this.#boundCopy);\n    document.addEventListener(\"cut\", this.#boundCut);\n    document.addEventListener(\"paste\", this.#boundPaste);\n  }\n\n  #removeCopyPasteListeners() {\n    document.removeEventListener(\"copy\", this.#boundCopy);\n    document.removeEventListener(\"cut\", this.#boundCut);\n    document.removeEventListener(\"paste\", this.#boundPaste);\n  }\n\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n\n  /**\n   * Copy callback.\n   * @param {ClipboardEvent} event\n   */\n  copy(event) {\n    event.preventDefault();\n\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(/* isForCopying = */ true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n\n  /**\n   * Cut callback.\n   * @param {ClipboardEvent} event\n   */\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n\n  /**\n   * Paste callback.\n   * @param {ClipboardEvent} event\n   */\n  paste(event) {\n    event.preventDefault();\n    const { clipboardData } = 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\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n\n    if (!Array.isArray(data)) {\n      return;\n    }\n\n    this.unselectAll();\n    const layer = this.currentLayer;\n\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\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({ cmd, undo, mustExec: true });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n\n  /**\n   * Keydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (!this.isEditorHandlingKeyboard) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n\n  /**\n   * Execute an action for a given name.\n   * For example, the user can click on the \"Undo\" entry in the context menu\n   * and it'll trigger the undo action.\n   * @param {Object} details\n   */\n  onEditingAction(details) {\n    if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n      this[details.name]();\n    }\n  }\n\n  /**\n   * Update the different possible states of this manager, e.g. is there\n   * something to undo, redo, ...\n   * @param {Object} details\n   */\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(\n      ([key, value]) => this.#previousStates[key] !== value\n    );\n\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details),\n      });\n    }\n  }\n\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details,\n    });\n  }\n\n  /**\n   * Set the editing state.\n   * It can be useful to temporarily disable it when the user is editing a\n   * FreeText annotation.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addKeyboardManager();\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.#removeKeyboardManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false,\n      });\n      this.disableUserSelect(false);\n    }\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\n  /**\n   * Get an id.\n   * @returns {string}\n   */\n  getId() {\n    return this.#idManager.getId();\n  }\n\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n\n  /**\n   * Add a new layer for a page which will contains the editors.\n   * @param {AnnotationEditorLayer} layer\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\n  /**\n   * Remove a layer.\n   * @param {AnnotationEditorLayer} layer\n   */\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n\n  /**\n   * Change the editor mode (None, FreeText, Ink, ...)\n   * @param {number} mode\n   * @param {string|null} editId\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n   *   keyboard action.\n   */\n  updateMode(mode, editId = null, isFromKeyboard = false) {\n    if (this.#mode === mode) {\n      return;\n    }\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      return;\n    }\n    this.setEditingState(true);\n    this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n    if (!editId && isFromKeyboard) {\n      this.addNewEditorFromKeyboard();\n      return;\n    }\n\n    if (!editId) {\n      return;\n    }\n    for (const editor of this.#allEditors.values()) {\n      if (editor.annotationElementId === editId) {\n        this.setSelected(editor);\n        editor.enterInEditMode();\n        break;\n      }\n    }\n  }\n\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   * @returns {undefined}\n   */\n  updateToolbar(mode) {\n    if (mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      mode,\n    });\n  }\n\n  /**\n   * Update a parameter in the current editor or globally.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor();\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        this.#mainHighlightColorPicker?.updateColor(value);\n        break;\n    }\n\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\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\n  /**\n   * Enable all the layers.\n   */\n  #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      for (const layer of this.#allLayers.values()) {\n        layer.enable();\n      }\n    }\n  }\n\n  /**\n   * Disable all the layers.\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    }\n  }\n\n  /**\n   * Get all the editors belonging to a given page.\n   * @param {number} pageIndex\n   * @returns {Array<AnnotationEditor>}\n   */\n  getEditors(pageIndex) {\n    const editors = [];\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        editors.push(editor);\n      }\n    }\n    return editors;\n  }\n\n  /**\n   * Get an editor with the given id.\n   * @param {string} id\n   * @returns {AnnotationEditor}\n   */\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n\n  /**\n   * Add a new editor.\n   * @param {AnnotationEditor} editor\n   */\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} 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        // When the div is removed from DOM the focus can move on the\n        // document.body, so we need to move it back to the main container.\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    this.unselect(editor);\n    if (\n      !editor.annotationElementId ||\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n    ) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n\n  /**\n   * The annotation element with the given id has been deleted.\n   * @param {AnnotationEditor} editor\n   */\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    editor.deleted = true;\n  }\n\n  /**\n   * Check if the annotation element with the given id has been deleted.\n   * @param {string} annotationElementId\n   * @returns {boolean}\n   */\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n\n  /**\n   * The annotation element with the given id have been restored.\n   * @param {AnnotationEditor} editor\n   */\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    editor.deleted = false;\n  }\n\n  /**\n   * Add an editor to the layer it belongs to or add it to the global map.\n   * @param {AnnotationEditor} editor\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    }\n  }\n\n  /**\n   * Set the given editor as the active one.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\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\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection,\n    });\n  }\n\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n\n  get isEnterHandled() {\n    return (\n      this.#selectedEditors.size === 1 &&\n      this.firstSelectedEditor.isEnterHandled\n    );\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Redo the last undoed command.\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\n  /**\n   * Add a command to execute (cmd) and another one to undo it.\n   * @param {Object} params\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\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Delete the current editor or all.\n   */\n  delete() {\n    this.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [...this.#selectedEditors];\n    const cmd = () => {\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\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  commitOrRemove() {\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n  }\n\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n\n  /**\n   * Select the editors.\n   * @param {Array<AnnotationEditor>} editors\n   */\n  #selectEditors(editors) {\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({ hasSelectedEditor: true });\n  }\n\n  /**\n   * Select all the editors.\n   */\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n\n  /**\n   * Unselect all the selected editors.\n   */\n  unselectAll() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        // If the mode is NONE, we want to really unselect the editor, hence we\n        // mustn't return here.\n        return;\n      }\n    }\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\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n\n    // We don't want to have an undo/redo for each translation so we wait a bit\n    // before adding the command to the command manager.\n    const TIME_TO_WAIT = 1000;\n\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n            }\n          }\n        },\n        mustExec: false,\n      });\n    }, TIME_TO_WAIT);\n\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n    }\n  }\n\n  /**\n   * Set up the drag session for moving the selected editors.\n   */\n  setUpDragSession() {\n    // Note: don't use any references to the editor's parent which can be null\n    // if the editor belongs to a destroyed page.\n    if (!this.hasSelection) {\n      return;\n    }\n    // Avoid to have spurious text selection in the text layer when dragging.\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\n  /**\n   * Ends the drag session.\n   * @returns {boolean} true if at least one editor has been moved.\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\n    for (const [{ x, y, pageIndex }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||=\n        x !== value.savedX ||\n        y !== value.savedY ||\n        pageIndex !== value.savedPageIndex;\n    }\n\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        // The editor can be undone/redone on a page which is not visible (and\n        // which potentially has no annotation editor layer), hence we need to\n        // use the pageIndex instead of the parent.\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\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true,\n    });\n\n    return true;\n  }\n\n  /**\n   * Drag the set of selected editors.\n   * @param {number} tx\n   * @param {number} ty\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\n  /**\n   * Rebuild the editor (usually on undo/redo actions) on a potentially\n   * non-rendered page.\n   * @param {AnnotationEditor} editor\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\n  get isEditorHandlingKeyboard() {\n    return (\n      this.getActive()?.shouldGetKeyboardEvents() ||\n      (this.#selectedEditors.size === 1 &&\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\n    );\n  }\n\n  /**\n   * Is the current editor the one passed as argument?\n   * @param {AnnotationEditor} editor\n   * @returns\n   */\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n\n  /**\n   * Get the current active editor.\n   * @returns {AnnotationEditor|null}\n   */\n  getActive() {\n    return this.#activeEditor;\n  }\n\n  /**\n   * Get the current editor mode.\n   * @returns {number}\n   */\n  getMode() {\n    return this.#mode;\n  }\n\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n}\n\nexport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  CommandManager,\n  KeyboardManager,\n  opacityToHex,\n};\n","/* Copyright 2012 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\nimport {\n  AbortException,\n  assert,\n  PromiseCapability,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\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}\n\nfunction createHeaders(httpHeaders) {\n  const headers = new Headers();\n  for (const property in httpHeaders) {\n    const value = httpHeaders[property];\n    if (value === undefined) {\n      continue;\n    }\n    headers.append(property, value);\n  }\n  return headers;\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}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFFetchStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\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\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\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 = new PromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._headers = createHeaders(this._stream.httpHeaders);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._reader = response.body.getReader();\n        this._headersCapability.resolve();\n\n        const getResponseHeader = name => {\n          return response.headers.get(name);\n        };\n        const { allowRangeRequests, suggestedLength } =\n          validateRangeRequestCapabilities({\n            getResponseHeader,\n            isHttp: this._stream.isHttp,\n            rangeChunkSize: this._rangeChunkSize,\n            disableRange: this._disableRange,\n          });\n\n        this._isRangeSupported = allowRangeRequests;\n        // Setting right content length.\n        this._contentLength = suggestedLength || this._contentLength;\n\n        this._filename = extractFilenameFromHeader(getResponseHeader);\n\n        // We need to stop reading when range is supported and streaming is\n        // disabled.\n        if (!this._isStreamingSupported && this._isRangeSupported) {\n          this.cancel(new AbortException(\"Streaming is disabled.\"));\n        }\n      })\n      .catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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 = new PromiseCapability();\n    this._isStreamingSupported = !source.disableStream;\n\n    this._abortController = new AbortController();\n    this._headers = createHeaders(this._stream.httpHeaders);\n    this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._readCapability.resolve();\n        this._reader = response.body.getReader();\n      })\n      .catch(this._readCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({ loaded: this._loaded });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2012 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\nimport {\n  assert,\n  bytesToString,\n  FeatureTest,\n  isNodeJS,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n  #systemFonts = new Set();\n\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null, // For testing only.\n  }) {\n    this._document = ownerDocument;\n\n    this.nativeFontFaces = new Set();\n    this.styleElement =\n      typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n        ? styleElement\n        : null;\n\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n      this.loadingRequests = [];\n      this.loadTestFontId = 0;\n    }\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement\n        .getElementsByTagName(\"head\")[0]\n        .append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\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\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async loadSystemFont({ systemFontInfo: info, _inspectFont }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(\n      !this.disableFontFace,\n      \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n    );\n\n    if (this.isFontLoadingAPISupported) {\n      const { loadedName, src, style } = 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(\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n        );\n\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n\n    unreachable(\n      \"Not implemented: loadSystemFont without the Font Loading API.\"\n    );\n  }\n\n  async bind(font) {\n    // Add the font to the DOM only once; skip if the font is already loaded.\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n      return;\n    }\n    font.attached = true;\n\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\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\n          // When font loading failed, fall back to the built-in font renderer.\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return; // The font was, asynchronously, loaded.\n    }\n\n    // !this.isFontLoadingAPISupported\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return; // The font was, synchronously, loaded.\n      }\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: async font loading\");\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n      // The font was, asynchronously, loaded.\n    }\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      return shadow(\n        this,\n        \"isFontLoadingAPISupported\",\n        hasFonts && !this.styleElement\n      );\n    }\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      return shadow(this, \"isSyncFontLoadingSupported\", true);\n    }\n\n    let supported = false;\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n      if (isNodeJS) {\n        // Node.js - we can pretend that sync font loading is supported.\n        supported = true;\n      } else if (\n        typeof navigator !== \"undefined\" &&\n        typeof navigator?.userAgent === \"string\" &&\n        // User agent string sniffing is bad, but there is no reliable way to\n        // tell if the font is fully loaded and ready to be used with canvas.\n        /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n      ) {\n        // Firefox, from version 14, supports synchronous font loading.\n        supported = true;\n      }\n    }\n    return shadow(this, \"isSyncFontLoadingSupported\", supported);\n  }\n\n  _queueLoadingCallback(callback) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _queueLoadingCallback\");\n    }\n\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n\n      // Sending all completed requests in order of how they were queued.\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n\n    const { loadingRequests } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback,\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n\n  get _loadTestFont() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _loadTestFont\");\n    }\n\n    // This is a CFF font with 1 glyph for '.' that fills its entire width\n    // and height.\n    const testFont = atob(\n      \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n        \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n        \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n        \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n        \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n        \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n        \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n        \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n        \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n        \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n        \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n        \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n        \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n        \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n        \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n        \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n        \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n    );\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n\n  _prepareFontLoadEvent(font, request) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n    }\n\n    /** Hack begin */\n    // There's currently no event when a font has finished downloading so the\n    // following code is a dirty hack to 'guess' when a font is ready.\n    // It's assumed fonts are loaded in order, so add a known test font after\n    // the desired fonts and then test for the loading of that test font.\n\n    function int32(data, offset) {\n      return (\n        (data.charCodeAt(offset) << 24) |\n        (data.charCodeAt(offset + 1) << 16) |\n        (data.charCodeAt(offset + 2) << 8) |\n        (data.charCodeAt(offset + 3) & 0xff)\n      );\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\n    // The temporary canvas is used to determine if fonts are loaded.\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n\n    let called = 0;\n    function isFontReady(name, callback) {\n      // With setTimeout clamping this gives the font ~100ms to load.\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\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    // Chromium seems to cache fonts based on a hash of the actual font data,\n    // so the font must be modified for each load test else it will appear to\n    // be loaded already.\n    // TODO: This could maybe be made faster by avoiding the btoa of the full\n    // font by splitting it in chunks before hand and padding the font id.\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n    data = spliceString(\n      data,\n      COMMENT_OFFSET,\n      loadTestFontId.length,\n      loadTestFontId\n    );\n    // CFF checksum is important for IE, adjusting it\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\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      // align to 4 bytes boundary\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\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\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\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\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n    /** Hack end */\n  }\n}\n\nclass FontFaceObject {\n  constructor(\n    translatedData,\n    {\n      isEvalSupported = true,\n      disableFontFace = false,\n      ignoreErrors = false,\n      inspectFont = null,\n    }\n  ) {\n    this.compiledGlyphs = Object.create(null);\n    // importing translated data\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._inspectFont = inspectFont;\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(\n        this.cssFontInfo.fontFamily,\n        this.data,\n        css\n      );\n    }\n\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const data = bytesToString(this.data);\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${btoa(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\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    let cmds;\n    try {\n      cmds = objs.get(this.loadedName + \"_path_\" + character);\n    } catch (ex) {\n      if (!this.ignoreErrors) {\n        throw ex;\n      }\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n      return (this.compiledGlyphs[character] = function (c, size) {\n        // No-op function, to allow rendering to continue.\n      });\n    }\n\n    // If we can, compile cmds into JS for MAXIMUM SPEED...\n    if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n      const jsBuf = [];\n      for (const current of cmds) {\n        const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n        jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n      }\n      // eslint-disable-next-line no-new-func\n      return (this.compiledGlyphs[character] = new Function(\n        \"c\",\n        \"size\",\n        jsBuf.join(\"\")\n      ));\n    }\n    // ... but fall back on using Function.prototype.apply() if we're\n    // blocked from using eval() for whatever reason (like CSP policies).\n    return (this.compiledGlyphs[character] = function (c, size) {\n      for (const current of cmds) {\n        if (current.cmd === \"scale\") {\n          current.args = [size, -size];\n        }\n        // eslint-disable-next-line prefer-spread\n        c[current.cmd].apply(c, current.args);\n      }\n    });\n  }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2012 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\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n  #metadataMap;\n\n  #data;\n\n  constructor({ parsedData, rawData }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\nexport { Metadata };\n","/* Copyright 2012 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\nimport { assert, PromiseCapability, stringToBytes } from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n  constructor(url, args = {}) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n    this.withCredentials = args.withCredentials || false;\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  requestRange(begin, end, listeners) {\n    const args = {\n      begin,\n      end,\n    };\n    for (const prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  }\n\n  requestFull(listeners) {\n    return this.request(listeners);\n  }\n\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const property in this.httpHeaders) {\n      const value = this.httpHeaders[property];\n      if (value === undefined) {\n        continue;\n      }\n      xhr.setRequestHeader(property, value);\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\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request.\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // Success status == 0 can be on ftp, file and other protocols.\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    const ok_response_on_range_request =\n      xhrStatus === OK_RESPONSE &&\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (\n      !ok_response_on_range_request &&\n      xhrStatus !== pendingRequest.expectedStatus\n    ) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n\n    const chunk = 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      pendingRequest.onDone({\n        begin: parseInt(matches[1], 10),\n        chunk,\n      });\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else {\n      pendingRequest.onError?.(xhr.status);\n    }\n  }\n\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source.url, {\n      httpHeaders: source.httpHeaders,\n      withCredentials: source.withCredentials,\n    });\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNetworkStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n      this._manager,\n      this._source\n    );\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(\n      this._manager,\n      begin,\n      end\n    );\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n\n    const args = {\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._url = source.url;\n    this._fullRequestId = manager.requestFull(args);\n    this._headersReceivedCapability = new PromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length; // Optional\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    const getResponseHeader = name => {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n    const { allowRangeRequests, suggestedLength } =\n      validateRangeRequestCapabilities({\n        getResponseHeader,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(getResponseHeader);\n\n    if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range requests.\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersReceivedCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: data.chunk, done: false });\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({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    this._headersReceivedCapability.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\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength,\n    });\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    this._headersReceivedCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\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}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n\n    const args = {\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    };\n    this._url = manager.url;\n    this._requestId = manager.requestRange(begin, end, args);\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(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\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({ loaded: evt.loaded });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\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 { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\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\nexport { PDFNetworkStream };\n","/* Copyright 2017 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\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\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\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\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\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      \"(?:^|;)\\\\s*\" +\n        attributePattern +\n        \"\\\\s*=\\\\s*\" +\n        // Captures: value = token | quoted-string\n        // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n        \"(\" +\n        '[^\";\\\\s][^;\\\\s]*' +\n        \"|\" +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n        \")\",\n      flags\n    );\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, { fatal: true });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {\n        // TextDecoder constructor threw - unrecognized encoding.\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match; // eslint-disable-line prefer-const\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\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        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n]; // eslint-disable-line prefer-const\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      // Find the first unescaped \" and terminate there.\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; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replaceAll(\n      /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function (matches, charset, encoding, text) {\n        if (encoding === \"q\" || encoding === \"Q\") {\n          // RFC 2047 section 4.2.\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        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch {}\n        return textdecode(charset, text);\n      }\n    );\n  }\n\n  return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 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\nimport {\n  assert,\n  MissingPDFException,\n  UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n  getResponseHeader,\n  isHttp,\n  rangeChunkSize,\n  disableRange,\n}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n      \"rangeChunkSize must be an integer larger than zero.\"\n    );\n  }\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n  const contentDisposition = getResponseHeader(\"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}\n\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n    return new MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new UnexpectedResponseException(\n    `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n    status\n  );\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n","/* Copyright 2012 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\nimport {\n  AbortException,\n  assert,\n  isNodeJS,\n  MissingPDFException,\n  PromiseCapability,\n} from \"../shared/util.js\";\nimport {\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nlet fs, http, https, url;\nif (isNodeJS) {\n  // Native packages.\n  fs = await import(/* webpackIgnore: true */ \"fs\");\n  http = await import(/* webpackIgnore: true */ \"http\");\n  https = await import(/* webpackIgnore: true */ \"https\");\n  url = await import(/* webpackIgnore: true */ \"url\");\n}\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n  const parsedUrl = url.parse(sourceUrl);\n  if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n    return parsedUrl;\n  }\n  // Prepending 'file:///' to Windows absolute path.\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse(`file:///${sourceUrl}`);\n  }\n  // Changes protocol to 'file:' if url refers to filesystem.\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = \"file:\";\n  }\n  return parsedUrl;\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp =\n      this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n    // Check if url refers to filesystem.\n    this.isFsUrl = this.url.protocol === \"file:\";\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNodeStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = this.isFsUrl\n      ? new PDFNodeStreamFsFullReader(this)\n      : new PDFNodeStreamFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = this.isFsUrl\n      ? new PDFNodeStreamFsRangeReader(this, start, end)\n      : new PDFNodeStreamRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\nclass BaseFullReader {\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; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = new PromiseCapability();\n    this._headersCapability = new PromiseCapability();\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = new PromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass BaseRangeReader {\n  constructor(stream) {\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 = new PromiseCapability();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = new PromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({ loaded: this._loaded });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n  return {\n    protocol: parsedUrl.protocol,\n    auth: parsedUrl.auth,\n    host: parsedUrl.hostname,\n    port: parsedUrl.port,\n    path: parsedUrl.path,\n    method: \"GET\",\n    headers,\n  };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      this._headersCapability.resolve();\n      this._setReadableStream(response);\n\n      const getResponseHeader = name => {\n        // Make sure that headers name are in lower case, as mentioned\n        // here: https://nodejs.org/api/http.html#http_message_headers.\n        return this._readableStream.headers[name.toLowerCase()];\n      };\n      const { allowRangeRequests, suggestedLength } =\n        validateRangeRequestCapabilities({\n          getResponseHeader,\n          isHttp: stream.isHttp,\n          rangeChunkSize: this._rangeChunkSize,\n          disableRange: this._disableRange,\n        });\n\n      this._isRangeSupported = allowRangeRequests;\n      // Setting right content length.\n      this._contentLength = suggestedLength || this._contentLength;\n\n      this._filename = extractFilenameFromHeader(getResponseHeader);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n      this._headersCapability.reject(reason);\n    });\n    // Note: `request.end(data)` is used to write `data` to request body\n    // and notify end of request. But one should always call `request.end()`\n    // even if there is no data to write -- (to notify the end of request).\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    this._httpHeaders = {};\n    for (const property in stream.httpHeaders) {\n      const value = stream.httpHeaders[property];\n      if (value === undefined) {\n        continue;\n      }\n      this._httpHeaders[property] = value;\n    }\n    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n      this._setReadableStream(response);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n    });\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    fs.lstat(path, (error, stat) => {\n      if (error) {\n        if (error.code === \"ENOENT\") {\n          error = new MissingPDFException(`Missing PDF \"${path}\".`);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      // Setting right content length.\n      this._contentLength = stat.size;\n\n      this._setReadableStream(fs.createReadStream(path));\n      this._headersCapability.resolve();\n    });\n  }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n  }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2020 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\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS, warn } from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nlet fs, canvas, path2d_polyfill;\nif (isNodeJS) {\n  // Native packages.\n  fs = await import(/* webpackIgnore: true */ \"fs\");\n  // Optional, third-party, packages.\n  try {\n    canvas = await import(/* webpackIgnore: true */ \"canvas\");\n  } catch {}\n  try {\n    path2d_polyfill = await import(/* webpackIgnore: true */ \"path2d-polyfill\");\n  } catch {}\n}\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"SKIP_BABEL\")) {\n  (function checkDOMMatrix() {\n    if (globalThis.DOMMatrix || !isNodeJS) {\n      return;\n    }\n    const DOMMatrix = canvas?.DOMMatrix;\n\n    if (DOMMatrix) {\n      globalThis.DOMMatrix = DOMMatrix;\n    } else {\n      warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n    }\n  })();\n\n  (function checkPath2D() {\n    if (globalThis.Path2D || !isNodeJS) {\n      return;\n    }\n    const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D;\n    const polyfillPath2D = path2d_polyfill?.polyfillPath2D;\n\n    if (CanvasRenderingContext2D && polyfillPath2D) {\n      globalThis.CanvasRenderingContext2D = CanvasRenderingContext2D;\n      polyfillPath2D(globalThis);\n    } else {\n      warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n    }\n  })();\n}\n\nconst fetchData = function (url) {\n  return new Promise((resolve, reject) => {\n    fs.readFile(url, (error, data) => {\n      if (error || !data) {\n        reject(new Error(error));\n        return;\n      }\n      resolve(new Uint8Array(data));\n    });\n  });\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    return canvas.createCanvas(width, height);\n  }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(url).then(data => {\n      return { cMapData: data, compressionType };\n    });\n  }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url);\n  }\n}\n\nexport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 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\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n  #visible = true;\n\n  constructor(name, intent) {\n    this.name = name;\n    this.intent = intent;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get visible() {\n    return this.#visible;\n  }\n\n  /**\n   * @ignore\n   */\n  _setVisible(internal, visible) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#visible = visible;\n  }\n}\n\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n\n  #groups = new Map();\n\n  #initialHash = null;\n\n  #order = null;\n\n  constructor(data) {\n    this.name = null;\n    this.creator = null;\n\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(\n        group.id,\n        new OptionalContentGroup(group.name, group.intent)\n      );\n    }\n\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n\n    // The following code must always run *last* in the constructor.\n    this.#initialHash = this.getHash();\n  }\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\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      warn(\"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      // Per the spec, the expression should be preferred if available.\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        // Default\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\n  setVisibility(id, visible = true) {\n    if (!this.#groups.has(id)) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n    this.#cachedGetHash = null;\n  }\n\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\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\n  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return (this.#cachedGetHash = hash.hexdigest());\n  }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2015 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\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n  AbortException,\n  FeatureTest,\n  PromiseCapability,\n  Util,\n} from \"../shared/util.js\";\nimport { setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n *   render, i.e. the value returned by the page's `streamTextContent` or\n *   `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n *   the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n *   weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n *   the `str` property of the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n *   OffscreenCanvas to measure string widths.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n *   the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n *   weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n *   OffscreenCanvas to measure string widths.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n *   rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\n\nfunction getCtx(size, isOffscreenCanvasSupported) {\n  let ctx;\n  if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n    ctx = new OffscreenCanvas(size, size).getContext(\"2d\", { alpha: false });\n  } else {\n    const canvas = document.createElement(\"canvas\");\n    canvas.width = canvas.height = size;\n    ctx = canvas.getContext(\"2d\", { alpha: false });\n  }\n\n  return ctx;\n}\n\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n  const cachedAscent = ascentCache.get(fontFamily);\n  if (cachedAscent) {\n    return cachedAscent;\n  }\n\n  const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n\n  ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n  const metrics = ctx.measureText(\"\");\n\n  // Both properties aren't available by default in Firefox.\n  let ascent = metrics.fontBoundingBoxAscent;\n  let descent = Math.abs(metrics.fontBoundingBoxDescent);\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n\n    ctx.canvas.width = ctx.canvas.height = 0;\n    return ratio;\n  }\n\n  // Try basic heuristic to guess ascent/descent.\n  // Draw a g with baseline at 0,0 and then get the line\n  // number where a pixel has non-null red component (starting\n  // from bottom).\n  ctx.strokeStyle = \"red\";\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"g\", 0, 0);\n  let pixels = ctx.getImageData(\n    0,\n    0,\n    DEFAULT_FONT_SIZE,\n    DEFAULT_FONT_SIZE\n  ).data;\n  descent = 0;\n  for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n    if (pixels[i] > 0) {\n      descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n  // number where a pixel has non-null red component (starting\n  // from top).\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n  pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n  ascent = 0;\n  for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n    if (pixels[i] > 0) {\n      ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  ctx.canvas.width = ctx.canvas.height = 0;\n\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n  return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n  // Initialize all used properties to keep the caches monomorphic.\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  task._textDivs.push(textDiv);\n\n  const tx = Util.transform(task._transform, geom.transform);\n  let angle = Math.atan2(tx[1], tx[0]);\n  const style = styles[geom.fontName];\n  if (style.vertical) {\n    angle += Math.PI / 2;\n  }\n\n  const fontFamily =\n    (task._fontInspectorEnabled && style.fontSubstitution) || style.fontFamily;\n  const fontHeight = Math.hypot(tx[2], tx[3]);\n  const fontAscent =\n    fontHeight * getAscent(fontFamily, task._isOffscreenCanvasSupported);\n\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\n  const scaleFactorStr = \"calc(var(--scale-factor)*\";\n  const divStyle = textDiv.style;\n  // Setting the style properties individually, rather than all at once,\n  // should be OK since the `textDiv` isn't appended to the document yet.\n  if (task._container === task._rootContainer) {\n    divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n    divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n  } else {\n    // We're in a marked content span, hence we can't use percents.\n    divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n    divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n  }\n  divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n  divStyle.fontFamily = fontFamily;\n\n  textDivProperties.fontSize = fontHeight;\n\n  // Keeps screen readers from pausing on every new text span.\n  textDiv.setAttribute(\"role\", \"presentation\");\n\n  textDiv.textContent = geom.str;\n  // geom.dir may be 'ttb' for vertical texts.\n  textDiv.dir = geom.dir;\n\n  // `fontName` is only used by the FontInspector, and we only use `dataset`\n  // here to make the font name available in the debugger.\n  if (task._fontInspectorEnabled) {\n    textDiv.dataset.fontName =\n      style.fontSubstitutionLoadedName || geom.fontName;\n  }\n  if (angle !== 0) {\n    textDivProperties.angle = angle * (180 / Math.PI);\n  }\n  // We don't bother scaling single-char text divs, because it has very\n  // little effect on text highlighting. This makes scrolling on docs with\n  // lots of such divs a lot faster.\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    // When the horizontal/vertical scaling differs significantly, also scale\n    // even single-char text to improve highlighting (fixes issue11713.pdf).\n    if (\n      absScaleX !== absScaleY &&\n      Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n    ) {\n      shouldScaleText = true;\n    }\n  }\n  if (shouldScaleText) {\n    textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n  }\n  task._textDivProperties.set(textDiv, textDivProperties);\n  if (task._isReadableStream) {\n    task._layoutText(textDiv);\n  }\n}\n\nfunction layout(params) {\n  const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n  const { style } = div;\n  let transform = \"\";\n  if (properties.canvasWidth !== 0 && properties.hasText) {\n    const { fontFamily } = style;\n    const { canvasWidth, fontSize } = properties;\n\n    if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n      ctx.font = `${fontSize * scale}px ${fontFamily}`;\n      params.prevFontSize = fontSize;\n      params.prevFontFamily = fontFamily;\n    }\n\n    // Only measure the width for multi-char text divs, see `appendText`.\n    const { width } = ctx.measureText(div.textContent);\n\n    if (width > 0) {\n      transform = `scaleX(${(canvasWidth * scale) / width})`;\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\nfunction render(task) {\n  if (task._canceled) {\n    return;\n  }\n  const textDivs = task._textDivs;\n  const capability = task._capability;\n  const textDivsLength = textDivs.length;\n\n  // No point in rendering many divs as it would make the browser\n  // unusable even after the divs are rendered.\n  if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n    capability.resolve();\n    return;\n  }\n\n  if (!task._isReadableStream) {\n    for (const textDiv of textDivs) {\n      task._layoutText(textDiv);\n    }\n  }\n  capability.resolve();\n}\n\nclass TextLayerRenderTask {\n  constructor({\n    textContentSource,\n    container,\n    viewport,\n    textDivs,\n    textDivProperties,\n    textContentItemsStr,\n    isOffscreenCanvasSupported,\n  }) {\n    this._textContentSource = textContentSource;\n    this._isReadableStream = textContentSource instanceof ReadableStream;\n    this._container = this._rootContainer = container;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n    this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n    this._reader = null;\n    this._textDivProperties = textDivProperties || new WeakMap();\n    this._canceled = false;\n    this._capability = new PromiseCapability();\n    this._layoutTextParams = {\n      prevFontSize: null,\n      prevFontFamily: null,\n      div: null,\n      scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n      properties: null,\n      ctx: getCtx(0, isOffscreenCanvasSupported),\n    };\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n    this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this._pageWidth = pageWidth;\n    this._pageHeight = pageHeight;\n\n    setLayerDimensions(container, viewport);\n\n    // Always clean-up the temporary canvas once rendering is no longer pending.\n    this._capability.promise\n      .finally(() => {\n        this._layoutTextParams = null;\n      })\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n  }\n\n  /**\n   * Promise for textLayer rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Cancel rendering of the textLayer.\n   */\n  cancel() {\n    this._canceled = true;\n    if (this._reader) {\n      this._reader\n        .cancel(new AbortException(\"TextLayer task cancelled.\"))\n        .catch(() => {\n          // Avoid \"Uncaught promise\" messages in the console.\n        });\n      this._reader = null;\n    }\n    this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n  }\n\n  /**\n   * @private\n   */\n  _processItems(items, styleCache) {\n    for (const item of items) {\n      if (item.str === undefined) {\n        if (\n          item.type === \"beginMarkedContentProps\" ||\n          item.type === \"beginMarkedContent\"\n        ) {\n          const parent = this._container;\n          this._container = document.createElement(\"span\");\n          this._container.classList.add(\"markedContent\");\n          if (item.id !== null) {\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      this._textContentItemsStr.push(item.str);\n      appendText(this, item, styleCache);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _layoutText(textDiv) {\n    const textDivProperties = (this._layoutTextParams.properties =\n      this._textDivProperties.get(textDiv));\n    this._layoutTextParams.div = textDiv;\n    layout(this._layoutTextParams);\n\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\n  /**\n   * @private\n   */\n  _render() {\n    const capability = new PromiseCapability();\n    let styleCache = Object.create(null);\n\n    if (this._isReadableStream) {\n      const pump = () => {\n        this._reader.read().then(({ value, done }) => {\n          if (done) {\n            capability.resolve();\n            return;\n          }\n\n          Object.assign(styleCache, value.styles);\n          this._processItems(value.items, styleCache);\n          pump();\n        }, capability.reject);\n      };\n\n      this._reader = this._textContentSource.getReader();\n      pump();\n    } else if (this._textContentSource) {\n      const { items, styles } = this._textContentSource;\n      this._processItems(items, styles);\n      capability.resolve();\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n\n    capability.promise.then(() => {\n      styleCache = null;\n      render(this);\n    }, this._capability.reject);\n  }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n  const task = new TextLayerRenderTask(params);\n  task._render();\n  return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n  container,\n  viewport,\n  textDivs,\n  textDivProperties,\n  isOffscreenCanvasSupported,\n  mustRotate = true,\n  mustRescale = true,\n}) {\n  if (mustRotate) {\n    setLayerDimensions(container, { rotation: viewport.rotation });\n  }\n\n  if (mustRescale) {\n    const ctx = getCtx(0, isOffscreenCanvasSupported);\n    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    const params = {\n      prevFontSize: null,\n      prevFontFamily: null,\n      div: null,\n      scale,\n      properties: null,\n      ctx,\n    };\n    for (const div of textDivs) {\n      params.properties = textDivProperties.get(div);\n      params.div = div;\n      layout(params);\n    }\n  }\n}\n\nexport { renderTextLayer, TextLayerRenderTask, updateTextLayer };\n","/* Copyright 2012 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\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert, PromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n  constructor(\n    {\n      length,\n      initialData,\n      progressiveDone = false,\n      contentDispositionFilename = null,\n      disableRange = false,\n      disableStream = false,\n    },\n    pdfDataRangeTransport\n  ) {\n    assert(\n      pdfDataRangeTransport,\n      'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n    );\n\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n\n    if (initialData?.length > 0) {\n      // Prevent any possible issues by only transferring a Uint8Array that\n      // completely \"utilizes\" its underlying ArrayBuffer.\n      const buffer =\n        initialData instanceof Uint8Array &&\n        initialData.byteLength === initialData.buffer.byteLength\n          ? initialData.buffer\n          : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({ loaded, total });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({ chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    this._pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData({ begin, chunk }) {\n    // Prevent any possible issues by only transferring a Uint8Array that\n    // completely \"utilizes\" its underlying ArrayBuffer.\n    const buffer =\n      chunk instanceof Uint8Array &&\n      chunk.byteLength === chunk.buffer.byteLength\n        ? chunk.buffer\n        : new Uint8Array(chunk).buffer;\n\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(\n        found,\n        \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n      );\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      // Reporting to first range reader, if it exists.\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total,\n      });\n    }\n  }\n\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFDataTransportStream.getFullReader can only be called once.\"\n    );\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(\n      this,\n      queuedChunks,\n      this._progressiveDone,\n      this._contentDispositionFilename\n    );\n  }\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\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n  constructor(\n    stream,\n    queuedChunks,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename)\n      ? contentDispositionFilename\n      : 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\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // Ignore new data.\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // ignore new data\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({ value: chunk, done: false });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({ value: undefined, done: true });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2018 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\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n *   process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n *   of the worker file.\n *\n *   NOTE: The `workerSrc` option should always be set, in order to prevent any\n *         issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2021 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, { value: null });\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, { value: event.target.value });\n        });\n        break;\n      case \"input\":\n        if (\n          element.attributes.type === \"radio\" ||\n          element.attributes.type === \"checkbox\"\n        ) {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            // The checked attribute may have been set when opening the file,\n            // unset through the UI and we're here because of printing.\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\n                ? event.target.getAttribute(\"xfaOn\")\n                : 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, { value: event.target.value });\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 =\n            options.selectedIndex === -1\n              ? \"\"\n              : options[options.selectedIndex].value;\n          storage.setValue(id, { value });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\n    const { attributes } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      // Avoid to have a radio group when printing with the same as one\n      // already displayed.\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\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          // We don't need to add dataId in the html object but it can\n          // be useful to know its value when writing printing tests:\n          // in this case, don't skip dataId to have its value.\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\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(\n        html,\n        attributes.href,\n        attributes.newWindow\n      );\n    }\n\n    // Set the value after the others to be sure to overwrite any other values.\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  /**\n   * Render the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\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\n    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n\n    // Set defaults.\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    // Text nodes used for the text highlighter.\n    const textDivs = [];\n\n    // In the rich text context, it's possible to just have a text node without\n    // a root element, so we handle this case here (see issue 17215).\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 { textDivs };\n    }\n\n    const stack = [[root, -1, rootHtml]];\n\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\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n\n      const { name } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n\n      const childHtml = child?.attributes?.xmlns\n        ? document.createElementNS(child.attributes.xmlns, name)\n        : document.createElement(name);\n\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\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\n    /**\n     * TODO: re-enable that stuff once we've JS implementation.\n     * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n     *\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaDisabled input, .xfaDisabled textarea\"\n     * )) {\n     * el.setAttribute(\"disabled\", true);\n     * }\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaReadOnly input, .xfaReadOnly textarea\"\n     * )) {\n     * el.setAttribute(\"readOnly\", true);\n     * }\n     */\n\n    for (const el of rootDiv.querySelectorAll(\n      \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n    )) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs,\n    };\n  }\n\n  /**\n   * Update the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\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\nexport { XfaLayer };\n","/* Copyright 2021 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\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n  /**\n   * Walk an XFA tree and create an array of text nodes that is compatible\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n   * all other fields and styles haven't been implemented.\n   *\n   * @param {Object} xfa - An XFA fake DOM object.\n   *\n   * @returns {TextContent}\n   */\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\n  /**\n   * @param {string} name - DOM node name. (lower case)\n   *\n   * @returns {boolean} true if the DOM node should have a corresponding text\n   * node.\n   */\n  static shouldBuildText(name) {\n    return !(\n      name === \"textarea\" ||\n      name === \"input\" ||\n      name === \"option\" ||\n      name === \"select\"\n    );\n  }\n}\n\nexport { XfaText };\n","/* Copyright 2012 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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n  AbortException,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationMode,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  FeatureTest,\n  ImageKind,\n  InvalidPDFException,\n  MissingPDFException,\n  normalizeUnicode,\n  OPS,\n  PasswordResponses,\n  PermissionFlag,\n  PromiseCapability,\n  shadow,\n  UnexpectedResponseException,\n  Util,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFWorker,\n  version,\n} from \"./display/api.js\";\nimport {\n  DOMSVGFactory,\n  fetchData,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  noContextMenu,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { ColorPicker } from \"./display/editor/color_picker.js\";\nimport { DrawLayer } from \"./display/draw_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { Outliner } from \"./display/editor/outliner.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  build,\n  CMapCompressionType,\n  ColorPicker,\n  createValidAbsoluteUrl,\n  DOMSVGFactory,\n  DrawLayer,\n  FeatureTest,\n  fetchData,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  MissingPDFException,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  Outliner,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  PromiseCapability,\n  RenderingCancelledException,\n  renderTextLayer,\n  setLayerDimensions,\n  shadow,\n  UnexpectedResponseException,\n  updateTextLayer,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n","/* Copyright 2018 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\nimport {\n  AbortException,\n  assert,\n  MissingPDFException,\n  PasswordException,\n  PromiseCapability,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\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};\n\nfunction wrapReason(reason) {\n  if (\n    !(\n      reason instanceof Error ||\n      (typeof reason === \"object\" && reason !== null)\n    )\n  ) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\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\n    this._onComObjOnMessage = event => {\n      const data = event.data;\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\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 cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this.#createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\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\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = new PromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\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\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = new PromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = new PromiseCapability();\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          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = new PromiseCapability();\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 Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\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\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        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = new PromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\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\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\n      sinkCapability: new PromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\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  }\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\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        // Ignore any pull after close is called.\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        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull?.());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\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        );\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\n        new Promise(function (resolve) {\n          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\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        );\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async #deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall?.promise,\n      streamController.pullCall?.promise,\n      streamController.cancelCall?.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2014 Opera Software ASA\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 *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\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 (isArrayBuffer(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\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\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\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\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\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    return (\n      (h1 >>> 0).toString(16).padStart(8, \"0\") +\n      (h2 >>> 0).toString(16).padStart(8, \"0\")\n    );\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 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/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\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  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15,\n};\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_DEFAULT_COLOR: 32,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\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};\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};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\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};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\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};\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};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\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};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\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  // beginAnnotations: 78,\n  // endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  // paintJpegXObject: 82,\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};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\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}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\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}\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}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\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}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      (typeof navigator !== \"undefined\" &&\n        typeof navigator?.platform === \"string\")\n    ) {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n      });\n    }\n    return shadow(this, \"platform\", { isMac: false });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swaped.\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[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[1] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[2];\n      minMax[2] = temp;\n      temp = minMax[1];\n      minMax[1] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[1] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[4];\n    minMax[2] += transform[5];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\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\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  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,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  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,\n  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,\n  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,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  // See section 7.9.2.2 Text String Type.\n  // The string can contain some language codes bracketed with 0x0b,\n  // so we must remove them.\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\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (!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  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (charCode === 0x1b) {\n      // eslint-disable-next-line no-empty\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}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v?.byteLength !== undefined;\n}\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}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n  #settled = false;\n\n  constructor() {\n    /**\n     * @type {Promise<any>} The Promise object.\n     */\n    this.promise = new Promise((resolve, reject) => {\n      /**\n       * @type {function} Fulfills the Promise.\n       */\n      this.resolve = data => {\n        this.#settled = true;\n        resolve(data);\n      };\n\n      /**\n       * @type {function} Rejects the Promise.\n       */\n      this.reject = reason => {\n        if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n          assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n        }\n        this.#settled = true;\n        reject(reason);\n      };\n    });\n  }\n\n  /**\n   * @type {boolean} If the Promise has been fulfilled/rejected.\n   */\n  get settled() {\n    return this.#settled;\n  }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\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\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n    return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n  });\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  if (\n    typeof crypto !== \"undefined\" &&\n    typeof crypto?.getRandomValues === \"function\"\n  ) {\n    crypto.getRandomValues(buf);\n  } else {\n    for (let i = 0; i < 32; i++) {\n      buf[i] = Math.floor(Math.random() * 255);\n    }\n  }\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MAX_IMAGE_SIZE_TO_CACHE,\n  MissingPDFException,\n  normalizeUnicode,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  PromiseCapability,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __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","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9907);\n",""],"names":["isCallable","require","tryToString","$TypeError","TypeError","module","exports","argument","isPossiblePrototype","$String","String","has","it","isPrototypeOf","Prototype","isObject","ArrayBuffer","DataView","uncurryThisAccessor","classof","prototype","O","byteLength","uncurryThis","arrayBufferByteLength","slice","error","global","toIndex","isDetached","detachTransferable","PROPER_STRUCTURED_CLONE_TRANSFER","structuredClone","min","Math","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newByteLength","undefined","fixedLength","newBuffer","transfer","options","a","b","copyLength","i","NATIVE_ARRAY_BUFFER","DESCRIPTORS","hasOwn","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","get","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","Object","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","NAME","Constructor","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isView","klass","getTypedArrayConstructor","proto","state","isTypedArray","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","Function","configurable","lengthOfArrayLike","list","$length","index","length","arguments","result","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","value","includes","indexOf","bind","IndexedObject","toObject","TYPE","IS_FIND_LAST_INDEX","callbackfn","that","self","boundFunction","findLast","findLastIndex","isArray","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","len","A","k","toIntegerOrInfinity","$RangeError","RangeError","relativeIndex","actualIndex","anObject","iteratorClose","iterator","fn","ENTRIES","toString","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tryGet","key","tag","callee","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","target","source","exceptions","keys","f","fails","F","constructor","done","createPropertyDescriptor","object","bitmap","enumerable","toPropertyKey","propertyKey","makeBuiltIn","name","descriptor","getter","set","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","src","tryNodeRequire","$ArrayBuffer","$MessageChannel","MessageChannel","detach","WorkerThreads","channel","buffer","$detach","transferable","port1","postMessage","document","EXISTS","createElement","MAX_SAFE_INTEGER","IndexSizeError","s","c","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","IS_DENO","IS_NODE","window","Deno","version","process","navigator","userAgent","versions","v8","match","split","$Error","Error","replace","TEST","arg","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","test","dropEntries","prepareStackTrace","clearErrorStack","ERROR_STACK_INSTALLABLE","captureStackTrace","copyConstructorProperties","isForced","TARGET","GLOBAL","STATIC","stat","FORCED","targetProperty","sourceProperty","dontCallGetSet","sham","exec","NATIVE_BIND","FunctionPrototype","apply","call","Reflect","aCallable","hasOwnProperty","getDescriptor","PROPER","something","CONFIGURABLE","method","uncurryThisWithBind","aFunction","namespace","obj","next","getIteratorDirect","getIteratorMethod","stringHandling","getMethod","isNullOrUndefined","Iterators","ITERATOR","usingIterator","iteratorMethod","V","P","func","INVALID_SIZE","max","SetRecord","intSize","size","getIterator","numSize","check","globalThis","getBuiltIn","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","cause","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","getterFor","type","metadata","facade","STATE","ArrayPrototype","Array","documentAll","all","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","USE_SYMBOL_AS_UID","$Symbol","record","ITERATOR_INSTEAD_OF_RECORD","step","isArrayIteratorMethod","Result","stopped","ResultPrototype","iterable","unboundFunction","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","iterFn","stop","condition","callFn","kind","innerResult","innerError","create","defineBuiltIns","IteratorPrototype","createIterResultObject","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","setInternalState","createIteratorProxyPrototype","nextHandler","returnMethod","inner","WrapForValidIteratorPrototype","IteratorHelperPrototype","IteratorProxy","Iterator","counter","createIteratorProxy","callWithSafeIterationClosing","mapper","map","IS_PURE","BUGGY_SAFARI_ITERATORS","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","toLength","CONFIGURABLE_FUNCTION_NAME","join","CONFIGURABLE_LENGTH","TEMPLATE","arity","ceil","floor","trunc","x","n","$default","definePropertiesModule","enumBugKeys","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","style","display","appendChild","contentWindow","open","NullProtoObject","ActiveXObject","domain","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","defineProperties","props","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","concat","getOwnPropertyNames","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","push","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","__proto__","input","pref","val","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","$SyntaxError","$parseInt","parseInt","fromCharCode","at","charAt","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","end","Target","Source","SetHelpers","iterate","Set","add","aSet","clone","getSetRecord","iterateSet","iterateSimple","remove","difference","other","otherRec","e","SetPrototype","intersection","isDisjointFrom","isSubsetOf","isSupersetOf","forEach","interruptible","createSetLike","symmetricDifference","keysIter","union","SHARED","mode","copyright","license","V8","IS_BROWSER","V8_VERSION","symbol","Symbol","integer","toPrimitive","prim","BigInt","number","requireObjectCoercible","toPositiveInteger","BYTES","offset","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","id","postfix","random","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","proxyAccessor","inheritIfRequired","normalizeStringArgument","installErrorCause","installErrorStack","FULL_NAME","wrapper","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","path","ERROR_NAME","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","message","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","item","argCount","wrapErrorConstructorWithCause","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","init","EvalError","ReferenceError","URIError","CompileError","LinkError","RuntimeError","ArrayBufferViewCore","$findLastIndex","predicate","$findLast","toOffset","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","arrayToReversed","toReversed","arrayFromConstructorAndList","sort","toSorted","compareFn","arrayWith","isBigIntArray","toBigInt","PROPER_ORDER","actualValue","detached","$transfer","transferToFixedLength","anInstance","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","real","every","filter","getIteratorFlattenable","flatMap","some","parseJSONString","JSON","Number","nativeParse","parse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","PRIMITIVE","OBJECT","$parse","reviver","context","Context","root","endIndex","skip","internalize","holder","node","unmodified","elementRecordsLen","nodeIsArray","nodes","internalizeProperty","Node","fork","nextIndex","keyword","start","expectKeypair","until","expectElement","parsed","startIndex","exponentStartIndex","regex","j","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","Infinity","text","setMethodAcceptSetLike","INCORRECT","from","DOMExceptionConstants","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMException","DOMExceptionPrototype","argumentsLength","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","validateArgumentsLength","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","append","$delete","params","$value","entries","v","dindex","found","entriesLength","entry","getAll","$has","values","count","makeColorComp","padStart","scaleAndClamp","ColorConverters","CMYK_G","_ref","y","G_CMYK","_ref2","g","G_RGB","_ref3","G_rgb","_ref4","G_HTML","_ref5","G","RGB_G","_ref6","r","RGB_rgb","color","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","_ref7","CMYK_rgb","_ref8","CMYK_HTML","components","rgb","RGB_CMYK","_ref9","AnnotationBorderStyleType","AnnotationEditorType","AnnotationPrefix","AnnotationType","FeatureTest","LINE_FACTOR","shadow","unreachable","Util","warn","DOMSVGFactory","getFilenameFromUrl","PDFDateString","setLayerDimensions","AnnotationStorage","XfaLayer","DEFAULT_TAB_INDEX","DEFAULT_FONT_SIZE","GetElementsByNameSet","WeakSet","getRectDims","rect","width","height","AnnotationElementFactory","parameters","subtype","annotationType","LINK","LinkAnnotationElement","TEXT","TextAnnotationElement","WIDGET","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","POPUP","PopupAnnotationElement","FREETEXT","FreeTextAnnotationElement","LINE","LineAnnotationElement","SQUARE","SquareAnnotationElement","CIRCLE","CircleAnnotationElement","POLYLINE","PolylineAnnotationElement","CARET","CaretAnnotationElement","INK","InkAnnotationElement","POLYGON","PolygonAnnotationElement","HIGHLIGHT","HighlightAnnotationElement","UNDERLINE","UnderlineAnnotationElement","SQUIGGLY","SquigglyAnnotationElement","STRIKEOUT","StrikeOutAnnotationElement","STAMP","StampAnnotationElement","FILEATTACHMENT","FileAttachmentAnnotationElement","AnnotationElement","hasBorder","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","annotationStorage","enableScripting","hasJSActions","_fieldObjects","fieldObjects","parent","container","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","str","hasPopupData","page","viewport","setAttribute","tabIndex","zIndex","popupRef","noRotate","classList","pageWidth","pageHeight","pageX","pageY","rawDims","rotation","hasOwnCanvas","setRotation","normalizeRect","view","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","SOLID","DASHED","BEVELED","INSET","borderBottomStyle","borderColor","makeHexColor","left","top","angle","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","event","detail","colorType","colorArray","setValue","hidden","visibility","noView","noPrint","print","focus","setTimeout","preventScroll","userName","title","readonly","disabled","_setRequired","bgColor","fillColor","fgColor","textColor","strokeColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","action","_setDefaultPropertiesFromJS","element","storedData","getRawValue","actionName","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","svg","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","popup","modificationDate","parentRect","elements","div","render","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","getElementsByName","getAttribute","show","maybeShow","hide","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_isEditable","_editOnDoubleClick","annotationEditorType","editId","addEventListener","eventBus","dispatch","isTooltipOnly","link","isBound","url","addLinkAttributes","newWindow","_bindNamedAction","attachment","bindAttachment","attachmentDest","setOCGState","bindSetOCGState","dest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","destination","href","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","filename","executeSetOCGState","Map","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","defaultValue","dispatchEvent","Event","ids","image","stringify","alternativeText","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","platform","isMac","metaKey","ctrlKey","_setEventListener","elementData","baseName","eventName","valueGetter","shift","shiftKey","modifier","focused","relatedTarget","_setEventListeners","Blur","Focus","_setBackgroundColor","backgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","fontSize","computedFontSize","BORDER_SIZE","roundToOneDecimal","round","multiLine","abs","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","removeAttribute","hasAppearance","fieldValue","setPropertyOnSiblings","base","keyInStorage","getValue","textContent","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","replaceAll","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","substring","preventDefault","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","removeEventListener","isExport","selectedIndex","selectedValues","getItems","multipleSelection","findIndex","items","clear","insert","selectChild","children","before","indices","editable","changeEx","keyDown","PopupElement","elementIds","boundKeyDown","boundHide","boundShow","boundToggle","toggle","dateObj","pinned","wasVisible","toDateObject","trigger","className","baseColor","outlineColor","CSS","supports","BACKGROUND_ENLIGHT","header","dir","date","toLocaleDateString","time","toLocaleTimeString","xfaHtml","intent","contents","_formatContents","useParentRect","intersect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","parentWidth","popupLeft","popupTop","p","lines","ii","line","createTextNode","altKey","isVisible","textPosition","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","points","coordinate","vertices","polylines","inkList","inkLists","file","fillAlpha","download","evt","AnnotationLayer","accessibilityManager","annotationCanvasMap","editableAnnotations","appendElement","contentElement","firstChild","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","setAnnotationCanvasMap","update","canvas","replaceWith","getEditableAnnotations","getEditableAnnotation","objectFromMap","AnnotationEditor","MurmurHash3_64","SerializableEmpty","freeze","hash","modified","onSetModified","onResetModified","onAnnotationEditor","assign","delete","resetModified","setModified","_type","setAll","PrintAnnotationStorage","serializable","hasBitmap","serialized","serialize","hexdigest","AbortException","AnnotationMode","assert","getVerbosityLevel","info","InvalidPDFException","isArrayBuffer","isNodeJS","MAX_IMAGE_SIZE_TO_CACHE","MissingPDFException","PasswordException","PromiseCapability","RenderingIntentFlag","setVerbosityLevel","stringToBytes","UnexpectedResponseException","UnknownErrorException","DOMCanvasFactory","DOMCMapReaderFactory","DOMFilterFactory","DOMStandardFontDataFactory","isDataScheme","isValidFetchUrl","PageViewport","RenderingCancelledException","StatTimer","FontFaceObject","FontLoader","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","CanvasGraphics","GlobalWorkerOptions","MessageHandler","Metadata","OptionalContentConfig","PDFDataTransportStream","PDFFetchStream","PDFNetworkStream","PDFNodeStream","XfaText","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","getDocument","URL","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","isInteger","worker","PDFWorker","verbosity","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","isEvalSupported","isOffscreenCanvasSupported","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","baseUrl","isCompressed","standardFontDataFactory","workerParams","port","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","promise","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","Promise","resolve","networkStream","initialData","progressiveDone","contentDispositionFilename","createPDFNetworkStream","workerId","messageHandler","transport","WorkerTransport","_transport","send","catch","_capability","reject","sendWithPromise","location","Buffer","isNaN","onPassword","onProgress","destroy","_pendingDestroy","ex","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","chunk","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","getViewport","scale","offsetX","offsetY","dontFlip","viewBox","getAnnotations","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","getXfa","canvasContext","annotationMode","ENABLE","transform","background","optionalContentConfigPromise","pageColors","printAnnotationStorage","abortDelayedCleanup","intentState","cacheKey","streamReaderCancelTimeout","clearTimeout","intentPrint","PRINT","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","renderTasks","internalRenderTask","tryCleanup","capability","_abortOperatorList","reason","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","getTextContent","xfa","readableStream","pump","reader","read","styles","getReader","getStructTree","_destroy","waitOn","force","completed","cancel","resetStats","success","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","extraDelay","curCacheKey","curIntentState","stats","LoopbackPort","listeners","deferred","terminate","PDFWorkerUtil","isWorkerDisabled","fakeWorkerId","workerSrc","isSameOrigin","otherUrl","origin","createCDNWrapper","createObjectURL","Blob","workerPorts","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","mainThreadWorkerMessageHandler","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","__non_webpack_import__","methodPromises","pageCache","pagePromises","passwordCapability","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","isOpList","DISPLAY","ANY","DISABLE","ANNOTATIONS_DISABLE","ENABLE_FORMS","ANNOTATIONS_FORMS","ENABLE_STORAGE","ANNOTATIONS_STORAGE","OPLIST","terminated","cancelAllRequests","sink","getFullReader","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_ref10","_numPages","htmlForXfa","code","status","details","exception","updatePassword","_ref11","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","finally","imageRef","pageProxy","dataLen","_ref12","imageData","fetch","num","gen","results","cleanupSuccessful","ensureObj","objId","settled","RenderTask","onContinue","form","canvasInUse","_ref13","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_ref14","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","build","CMapCompressionType","BaseFilterFactory","addFilter","maps","addHCMFilter","addHighlightHCMFilter","newFgColor","newBgColor","keepHCM","BaseCanvasFactory","_createCanvas","getContext","reset","canvasAndContext","BaseCMapReaderFactory","compressionType","BINARY","NONE","_fetchData","BaseStandardFontDataFactory","BaseSVGFactory","skipDimensions","_createSVG","FormatError","getCurrentTransform","PathType","FILL","STROKE","SHADING","applyBoundingBox","ctx","bbox","region","Path2D","clip","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","translate","baseTransform","fillStyle","fill","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p1","p2","p3","c1","c2","c3","coords","colors","bytes","rowSize","tmp","x1","scaleX","y1","scaleY","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","singularValueDecompose2dScale","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","xstep","ystep","paintType","tilingType","createPatternCanvas","x0","y0","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","save","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","updateRectMinMax","endPath","strokeStyle","cssColor","ImageKind","convertToRGBA","GRAYSCALE_1BPP","convertBlackAndWhiteToRGBA","RGB_24BPP","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","isLittleEndian","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","len32","src32","s1","s2","s3","jj","grayToRGBA","FONT_IDENTITY_MATRIX","IDENTITY_MATRIX","OPS","TextRenderingMode","getCurrentTransformInverse","PixelsPerInch","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","restore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","moveTo","__originalLineTo","lineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","closePath","__originalBeginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","d","ctxSetTransform","ctxResetTransform","ctxRotate","rule","cp1x","cp1y","cp2x","cp2y","CachedCanvases","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","hypot","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","lineSize","pos","mask","sum","steps","p0","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","applyTransform","minX","maxX","p4","updateScalingPathMinMax","minMax","scaleMinMax","updateCurvePathMinMax","box","bezierBoundingBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","putBinaryImageData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","RGBA_32BPP","subarray","putBinaryImageMask","copyCtxState","sourceCtx","properties","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","getImageData","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","startsWith","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","Date","now","fnId","breakIt","dependency","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","foreground","savedFilter","_scaleImage","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","getAxialAlignedBoundingBox","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","setLineWidth","setLineCap","setLineJoin","setMiterLimit","limit","setDash","dashArray","dashPhase","setRenderingIntent","setFlatness","flatness","setGState","states","setFont","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","constructPath","ops","args","startX","startY","isScalingMatrix","minMaxForBezier","rectangle","xw","yh","curveTo","curveTo2","curveTo3","stroke","consumePath","rescaleAndStroke","closeStroke","needRestore","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","eoClip","beginText","endText","paths","pendingTextPaths","addToPath","setCharSpacing","spacing","setWordSpacing","setHScale","setLeading","fontRefName","fontObj","fontDirection","isType3Font","loadedName","typeface","systemFontInfo","css","fallbackName","bold","italic","browserFontSize","setTextRenderingMode","setTextRise","rise","moveText","setLeadingMoveText","setTextMatrix","nextLine","paintChar","character","patternTransform","fillStrokeMode","FILL_STROKE_MASK","isAddToPathSet","ADD_TO_PATH_FLAG","missingFile","getPathGenerator","FILL_STROKE","fillText","strokeText","isFontSubpixelAAEnabled","showText","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","INVISIBLE","spacingLength","charProcOperatorList","operatorListId","transformed","setCharWidth","xWidth","yWidth","setCharWidthAndBounds","llx","lly","urx","ury","getColorN_Pattern","_getPattern","setStrokeColorN","setFillColorN","setStrokeRGBColor","setFillRGBColor","shadingFill","inv","beginInlineImage","beginImageData","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","endGroup","currentMtx","beginAnnotation","canvasWidth","canvasHeight","annotationCanvas","savedCtx","endAnnotation","paintImageMaskXObject","compiled","paintImageMaskXObjectRepeat","skewX","skewY","positions","trans","paintImageMaskXObjectGroup","images","paintImageXObject","paintInlineImageXObject","paintImageXObjectRepeat","w","h","paintInlineImageXObjectGroup","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","paintSolidColorImageMask","markPoint","markPointProps","beginMarkedContent","visible","beginMarkedContentProps","isContentVisible","endMarkedContent","beginCompat","endCompat","isEmpty","absDet","normX","normY","getScaleForStroking","getTransform","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","BaseException","SVG_NS","PDF","_","_defineProperty","_cache","_defs","hcmFilter","hcmKey","hcmUrl","hcmHighlightFilter","hcmHighlightKey","hcmHighlightUrl","contain","position","createElementNS","body","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","createFilter","addTransferMapConversion","fgRGB","getRGB","bgRGB","table","addGrayConversion","getSteps","arr","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","parentNode","feColorMatrix","appendFeFunc","feComponentTransfer","feFunc","rTable","gTable","bTable","getComputedStyle","getPropertyValue","_document","fetchData","response","ok","statusText","blob","json","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","cMapData","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","msg","trim","isPdfFile","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","decodeURIComponent","started","times","outBuf","longest","padEnd","protocol","noContextMenu","deprecated","console","log","pdfDateStringRegex","RegExp","matches","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","getColorValues","span","computedColor","invertSelf","mustFlip","mustRotate","useRound","isCSSRoundSupported","widthStr","heightStr","DrawLayer","mapping","setParent","_svgFactory","setBox","createSVG","highlight","opacity","outlines","pathId","extractPathFromHighlightOutlines","clipPathId","clipPathUse","use","highlightOutline","use1","use2","cloneNode","polygons","polygon","prevX","prevY","updateBox","changeColor","changeOpacity","addClass","removeClass","AnnotationEditorParamsType","AnnotationEditorUIManager","bindEvents","KeyboardManager","FreeTextEditor","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","editorDivId","_freeTextDefaultContent","_internalPadding","_defaultColor","_defaultFontSize","_keyboardManager","arrowChecker","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","commitOrRemove","bubbles","_translateEmpty","checker","_editorType","_defaultLineColor","initialize","l10n","strings","documentElement","parseFloat","updateDefaultParams","FREETEXT_SIZE","FREETEXT_COLOR","updateParams","updateFontSize","updateColor","defaultPropertiesToUpdate","propertiesToUpdate","setFontsize","editorDiv","parentScale","setEditorDimensions","savedFontsize","addCommands","cmd","undo","mustExec","overwriteIfSameType","keepUndo","savedColor","_uiManager","translateSelectedEditors","getInitialTranslation","rebuild","isAttachedToDOM","enableEditMode","isInEditMode","setEditingState","updateToolbar","overlayDiv","contentEditable","_isDraggable","disableEditMode","isEditing","focusin","_focusEventsAllowed","onceAdded","cheatInitialRect","_initialOptions","isCentered","center","innerText","extractText","divs","getElementsByTagName","parentHeight","parentDimensions","getBoundingClientRect","currentLayer","savedDisplay","parentRotation","fixAndSetPosition","commit","savedText","newText","trimEnd","setText","setContent","shouldGetKeyboardEvents","enterInEditMode","dblclick","keydown","disableEditing","enableEditing","baseX","baseY","_l10nPromise","annotationElementId","pageTranslationToScreen","pageDimensions","pageTranslation","posX","posY","setAt","replaceChildren","contentDiv","deserialize","uiManager","deleted","editor","isForCopying","padding","getRect","_colorManager","convert","structTreeParentId","_structTreeParentId","hasElementChanged","ColorPicker","Outliner","HighlightEditor","boxes","colorPicker","focusOutlines","highlightDiv","highlightOutlines","lastPoint","outlineId","_defaultOpacity","highlightColors","createOutlines","addToDrawLayer","outliner","getOutlines","outlinerForOutline","direction","HIGHLIGHT_DEFAULT_COLOR","toolbarPosition","HIGHLIGHT_COLOR","drawLayer","addEditToolbar","toolbar","addColorPicker","addUndoableEditor","cleanDrawLayer","mustBeSelected","contains","select","rotateBbox","setDims","pointerover","pointerleave","unselect","serializeBoxes","sx","sy","serializeOutlines","outline","canCreateNewEmptyEditor","opacityToHex","InkEditor","baseHeight","baseWidth","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","canvasContextMenuTimeoutId","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","_defaultThickness","thickness","bezierPath2D","allRawPaths","currentPath","scaleFactor","translationX","translationY","_willKeepAspectRatio","INK_THICKNESS","INK_COLOR","INK_OPACITY","updateThickness","updateOpacity","savedThickness","fitToContent","redraw","savedOpacity","createCanvas","createObserver","setCanvasDims","disconnect","removeShouldRescale","addShouldRescale","onScaleChanging","setDimensions","getInitialBBox","setStroke","startDrawing","drawPoints","draw","lastX","lastY","path2D","makeBezierCurve","stopDrawing","bezier","generateBezierPoints","xy","lastPoints","xMin","xMax","yMin","yMax","bezierPoints","control1","control2","updateTransform","setInForeground","addInkEditorIfNeeded","moveInDOM","button","addToAnnotationStorage","setInBackground","ResizeObserver","contentRect","observe","setAspectRatio","roundedWidth","roundedHeight","setScaleFactor","fixDims","getPadding","scaleFactorW","scaleFactorH","buildPath2D","first","toPDFCoordinates","fromPDFCoordinates","serializePaths","shiftX","shiftY","p10","p11","p20","p21","p30","p31","p40","p41","getBbox","firstTime","MIN_SIZE","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","bitmapFileName","resizeTimeoutId","isSvg","hasBeenAddedInUndoStack","supportedTypes","types","supportedTypesStr","isHandlingMimeForPasting","mime","paste","pasteEditor","getAsFile","getBitmapFetched","fromId","getBitmapDone","enableWaiting","getBitmap","imageManager","getFromId","getFromUrl","getFromFile","accept","files","click","deleteId","MAX_RATIO","factor","drawBitmap","_eventBus","editorType","addAltTextButton","TIME_TO_WAIT","scaleBitmap","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","OffscreenCanvas","transferToImageBitmap","getImageForAltText","serializeBitmap","toUrl","getSvgUrl","toDataURL","accessibilityData","isValidId","altTextData","decorative","altText","alt","stamps","area","prevData","AnnotationEditorLayer","allowClick","annotationLayer","boundPointerup","pointerup","boundPointerUpAfterSelection","pointerUpAfterSelection","boundPointerdown","pointerdown","editorFocusTimeoutId","boundSelectionStart","editors","hadPointerDown","isCleaningUp","isDisabling","textLayer","_initialized","editorTypes","registerEditorTypes","addLayer","updateMode","getMode","disableTextSelection","togglePointerEvents","disableClick","enableTextSelection","enableClick","isCommitting","createAndAddNewEditor","enable","annotationElementIds","editables","isDeletedAnnotationElement","addOrRebuild","disable","hiddenAnnotationIds","setActiveEditor","currentActive","getActive","attach","removeDeletedAnnotationElement","removePointerInTextLayer","addDeletedAnnotationElement","removeEditor","changeParent","deleteAnnotationElement","addEditor","moveEditorInDOM","once","needsToBeRebuilt","getNextId","getId","currentEditorType","createNewEditor","getCenterPoint","innerWidth","innerHeight","addNewEditor","setSelected","toggleSelected","isSelected","_event","selection","getSelection","rangeCount","getRangeAt","collapsed","commonAncestorContainer","layerX","layerY","bboxes","getClientRects","rotator","empty","unselectAll","findNewParent","findParent","removeLayer","getEditors","oldRotation","buttonSwatch","defaultColor","dropdown","dropdownWasFromKeyboard","isMainColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","renderButton","openDropdown","swatch","renderMainDropdown","getDropdownRoot","paramType","role","colorSelect","stopPropagation","nextSibling","hideDropdown","focusVisible","child","AltText","altTextDecorative","altTextButton","altTextTooltip","altTextTooltipTimeout","altTextWasFromKeyBoard","l10nPromise","onClick","editAltText","capture","setState","finish","tooltip","DELAY_TO_SHOW_TOOLTIP","EditorToolbar","buttons","editToolbar","pointerDown","insetInlineEnd","addDeleteButton","focusIn","focusOut","addListenersToElement","divider","ColorManager","allResizerDivs","keepAspectRatio","resizersDiv","savedDimensions","boundFocusin","boundFocusout","focusout","focusedResizerName","hasBeenClicked","isResizerEnabledForKeyboard","moveInDOMTimeout","isDraggable","_zIndex","_borderLineWidth","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","pageRotation","viewParameters","getHexCode","fakeEditor","FakeEditor","_value","isEnterHandled","stopResizing","closest","isMultipleSelection","screenToPageTranslation","translateInPage","scrollIntoView","block","drag","bx","by","getBaseTranslation","toFixed","rotatePoint","getRotationMatrix","realScale","scaledWidth","scaledHeight","widthPercent","endsWith","heightPercent","createResizers","classes","resizerPointerdown","boundResizerPointermove","resizerPointermove","savedDraggable","pointerMoveOptions","passive","savedX","savedY","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","addResizeToUndoStack","newX","newY","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","altTextFinish","removeEditToolbar","getClientDimensions","maxWidth","maxHeight","setUpDragSession","selectOnPointerEvent","pointerMoveCallback","dragSelectedEditors","endDragSession","_setParentAndPosition","getRectInCurrentCoords","_angle","makeResizable","boundResizerKeydown","resizerKeydown","boundResizerBlur","resizerBlur","resizerFocus","firstPosition","nextFirstPosition","setResizerTabIndex","stopImmediatePropagation","aspectRatio","verticalEdges","intervals","innerMargin","isLTR","NUMBER_OF_DIGITS","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","breakEdge","edges","allEdges","edge1","edge2","lastPointX","lastPointY","binarySearch","middle","splice","y4","AnnotationEditorPrefix","getUuid","IdManager","ImageManager","baseId","_isSVGFittingCanvas","Image","decode","rawData","refCounter","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","lastModified","CommandManager","commands","locked","redo","hasSomethingToUndo","hasSomethingToRedo","callbacks","allKeys","isMacKey","_colorsMapping","matchMedia","RGB","activeEditor","allEditors","allLayers","altTextManager","commandManager","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorsToRescale","focusMainContainerTimeoutId","idManager","isEnabled","isWaiting","lastActiveElement","mainHighlightColorPicker","selectedEditors","boundBlur","blur","boundFocus","boundCopy","copy","boundCut","cut","boundPaste","boundKeydown","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","translation","translationTimeoutId","viewer","tagName","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","pdfDocument","_on","removeKeyboardManager","removeFocusManager","_off","pair","setMainHighlightColorPicker","focusMainContainer","disableUserSelect","pagesRotation","addFocusManager","hasSelection","lastEditor","addKeyboardManager","addCopyPasteListeners","removeCopyPasteListeners","addEditListeners","removeEditListeners","clipboardData","setData","newEditors","deserializedEditor","addEditorToLayer","selectEditors","isEditorHandlingKeyboard","dispatchUpdateStates","hasChanged","dispatchUpdateUI","getLayer","isFromKeyboard","disableAll","enableAll","CREATE","mustWait","getEditor","ed","firstSelectedEditor","noCommit","totalX","totalY","savedPageIndex","newPageIndex","mustBeAddedInUndoStack","move","isActive","createResponseStatusError","extractFilenameFromHeader","validateRangeRequestCapabilities","validateResponseStatus","createFetchOptions","headers","abortController","signal","credentials","redirect","createHeaders","Headers","getArrayBuffer","isHttp","_fullRequestReader","_rangeRequestReaders","_progressiveDataLength","_loaded","PDFFetchStreamReader","PDFFetchStreamRangeReader","stream","_stream","_reader","_filename","_withCredentials","_contentLength","_headersCapability","_disableRange","_rangeChunkSize","_abortController","AbortController","_isStreamingSupported","_isRangeSupported","_headers","getResponseHeader","allowRangeRequests","suggestedLength","_readCapability","bytesToString","string32","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","styleSheet","sheet","cssRules","loadSystemFont","_inspectFont","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","completeRequest","otherRequest","_loadTestFont","testFont","atob","int32","charCodeAt","spliceString","chunk1","chunk2","called","isFontReady","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","cssFontInfo","weight","fontWeight","italicAngle","mimetype","cmds","jsBuf","metadataMap","parsedData","getRaw","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","prop","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_onProgress","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_requests","_done","_storedError","fullRequestXhrId","fullRequestXhr","requestCapability","lengthComputable","_requestId","_queuedChunk","_close","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","returnValues","contentEncoding","fs","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","BaseRangeReader","createRequestOptions","auth","hostname","handleResponse","statusCode","_request","_httpHeaders","Range","lstat","createReadStream","path2d_polyfill","checkDOMMatrix","checkPath2D","CanvasRenderingContext2D","polyfillPath2D","readFile","INTERNAL","OptionalContentGroup","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","operator","expression","policy","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_ASCENT","ascentCache","getCtx","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","atan2","fontName","PI","_fontInspectorEnabled","fontSubstitution","fontHeight","fontAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","ReadableStream","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","br","_render","renderTextLayer","updateTextLayer","mustRescale","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_rangeReaders","_onReceiveData","_onProgressiveDone","_enqueue","_begin","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_headersReady","_end","requestsCapability","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","rootHtml","isNotForRichText","rootDiv","shouldBuildText","childHtml","xmlns","querySelectorAll","output","walk","createValidAbsoluteUrl","normalizeUnicode","PasswordResponses","PermissionFlag","VerbosityLevel","pdfjsVersion","pdfjsBuild","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","processStreamMessage","cbSourceName","cbTargetName","createStreamSink","handler","ah","transfers","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","deleteStreamController","allSettled","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","nw","electron","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SAVE","RESIZE","FREETEXT_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","SOUND","MOVIE","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","K","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","ERRORS","WARNINGS","INFOS","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setFillColor","setStrokeGray","setFillGray","setStrokeCMYKColor","setFillCMYKColor","endInlineImage","paintXObject","NEED_PASSWORD","INCORRECT_PASSWORD","level","cond","_isValidProtocol","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","nonSerializable","BaseExceptionClosure","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","objectSize","buffer8","view32","hexNumbers","m1","m2","xt","yt","transpose","sqrt","rect1","rect2","xLow","xHigh","yLow","yHigh","tvalues","t","t1","t2","b2ac","sqrtb2ac","mt","jlen","PDFStringTranslateTable","stringToPDFString","decoded","charCode","escape","utf8StringToString","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","crypto","randomUUID","buf","getRandomValues"],"sourceRoot":""}