{"version":3,"sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/@babel/runtime/regenerator/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/webpack/buildin/module.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/global-this.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.global-this.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/export.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/global.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/descriptors.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/fails.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-property-descriptor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-indexed-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/indexed-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/classof-raw.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/require-object-coercible.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-primitive.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/has.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/ie8-dom-define.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/document-create-element.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-define-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/an-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/redefine.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-global.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/inspect-source.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared-store.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/internal-state.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-weak-map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared-key.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/shared.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-pure.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/uid.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/hidden-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/own-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-built-in.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/path.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-keys-internal.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-length.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-absolute-index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/enum-bug-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-forced.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/starts-with.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.starts-with.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/not-a-regexp.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-regexp.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/well-known-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/entry-unbind.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/function-bind-context.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/a-function.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/ends-with.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.ends-with.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/array/includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.array.includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/add-to-unscopables.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-define-properties.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/html.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-method-uses-to-length.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/array/from.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-multibyte.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/define-iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-iterator-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterators-core.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterators.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/a-possible-prototype.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.array.from.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-from.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/create-property.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-iterator-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/classof.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/to-string-tag-support.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/object/assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/object/from-entries.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.array.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.from-entries.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/iterate.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/math/log2.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.math.log2.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/number/is-nan.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.number.is-nan.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/number/is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.number.is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/typed-array/slice.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.typed-array.slice.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-buffer-view-core.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-buffer-native.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/species-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/promise/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/dom-iterables.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-promise-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/redefine-all.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/set-species.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/an-instance.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/task.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-is-ios.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-user-agent.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/microtask.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/promise-resolve.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/new-promise-capability.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/host-report-errors.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/perform.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/engine-v8-version.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.all-settled.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.promise.finally.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/web/url.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.url.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/native-url.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.url-search-params.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/get-iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.url.to-json.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/web-streams-polyfill/dist/ponyfill.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/map/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/collection.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/internal-metadata.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/freezing.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/inherit-if-required.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/collection-strong.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/set/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.set.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/weak-map/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.weak-map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/collection-weak.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-iteration.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-species-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/is-array.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/weak-set/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.weak-set.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/code-point-at.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.code-point-at.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/from-code-point.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.from-code-point.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/symbol/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.array.concat.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/array-method-has-species-support.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/define-well-known-symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.description.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.has-instance.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.match.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.match-all.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.replace.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.search.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.species.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.split.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.symbol.unscopables.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.math.to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.json.to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/pad-start.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.pad-start.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-pad.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-repeat.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/string/pad-end.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.string.pad-end.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/object/values.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.values.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/internals/object-to-array.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es/object/entries.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es.object.entries.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/obj.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js"],"names":["pdfjsVersion","pdfjsBuild","constructor","testMessageProcessed","handler","supportTransfers","data","setVerbosityLevel","WorkerMessageHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","numPages","fingerprint","pdfManagerCapability","source","newPdfManager","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","ensureNotTerminated","arrayByteLength","total","Math","reject","pdfInfo","ex","startWorkerTask","finishWorkerTask","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","getPdfManager","stream","rotate","ref","userUnit","view","pageRef","Ref","page","promises","document","pageIndex","newRefs","x","a","xref","newXrefInfo","Object","_info","xrefInfo","isString","stringToPDFString","rootRef","encrypt","newRef","infoRef","info","fileIds","startXRef","filename","incrementalUpdate","start","VerbosityLevel","Date","sink","intent","renderInteractiveForms","annotationStorage","operatorListInfo","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","combineTextItems","waitOn","cleanupPromise","setupDoc","maybePort","isMessagePort","module","require","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","value","enumerable","configurable","writable","obj","define","protoGenerator","outerFn","generator","context","tryLocsList","makeInvokeMethod","exports","type","arg","fn","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","ctor","genFun","__await","record","tryCatch","result","invoke","resolve","previousPromise","callInvokeWithMethodAndArg","defineIteratorMethods","AsyncIterator","PromiseImpl","iter","wrap","state","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","done","entry","tryLoc","locs","keys","key","next","iteratorMethod","iterable","isNaN","Context","reset","name","stop","rootEntry","rootRecord","dispatchException","handle","hasCatch","hasFinally","abrupt","finallyEntry","complete","finish","resetTryEntry","thrown","delegateYield","iterator","resultName","nextLoc","regeneratorRuntime","Function","get","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","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","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontGetPath","errorMarkedContent","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","BaseException","NullCharactersRegExp","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","pos","item","stringToBytes","itemLength","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","rgbBuf","m1","m2","xt","p","m","yt","d","p1","Util","p2","r","p3","p4","v","transpose","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","PDFStringTranslateTable","code","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","element","date","buffer","capability","isSettled","createObjectURL","digits","forceDataSchema","URL","blob","ii","b1","b2","b3","d1","d2","d3","d4","globalThis","hasDOM","userAgent","navigator","isIE","Buffer","Element","div","OriginalDOMTokenListAdd","DOMTokenList","OriginalDOMTokenListRemove","token","force","arguments","OriginalPushState","window","OriginalReplaceState","args","Array","Uint8Array","isReadableStreamSupported","controller","isNodeJS","process","$","global","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","TARGET","target","GLOBAL","STATIC","stat","FORCED","targetProperty","sourceProperty","descriptor","prototype","noTargetGet","forced","undefined","sham","check","it","self","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","has","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","O","P","error","call","fails","defineProperty","exec","nativePropertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","V","bitmap","IndexedObject","requireObjectCoercible","classof","split","toString","slice","TypeError","isObject","input","PREFERRED_STRING","val","valueOf","hasOwnProperty","createElement","EXISTS","definePropertyModule","object","anObject","nativeDefineProperty","Attributes","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","join","store","functionToString","SHARED","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","set","getterFor","TYPE","wmget","wmhas","wmset","metadata","STATE","test","shared","uid","IS_PURE","push","version","mode","copyright","id","postfix","random","ownKeys","getOwnPropertyDescriptorModule","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertySymbols","concat","path","aFunction","variable","namespace","internalObjectKeys","enumBugKeys","getOwnPropertyNames","indexOf","names","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","index","includes","toInteger","min","argument","ceil","floor","max","integer","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","entryUnbind","notARegExp","correctIsRegExpLogic","nativeStartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","proto","searchString","that","search","isRegExp","wellKnownSymbol","MATCH","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","Symbol","createWellKnownSymbol","withoutSetter","METHOD_NAME","regexp","e","bind","CONSTRUCTOR","METHOD","apply","nativeEndsWith","endsWith","endPosition","len","end","$includes","addToUnscopables","arrayMethodUsesToLength","USES_TO_LENGTH","ACCESSORS","create","UNSCOPABLES","ArrayPrototype","defineProperties","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","style","display","appendChild","src","contentWindow","open","F","NullProtoObject","domain","ActiveXObject","Properties","objectKeys","cache","thrower","argument0","argument1","from","charAt","defineIterator","STRING_ITERATOR","setInternalState","iterated","point","CONVERT_TO_STRING","S","position","size","charCodeAt","codeAt","createIteratorConstructor","getPrototypeOf","setPrototypeOf","setToStringTag","Iterators","IteratorsCore","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","entries","TO_STRING_TAG","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CurrentIteratorPrototype","methods","KEY","PrototypeOfArrayIteratorPrototype","arrayIterator","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","TAG","aPossiblePrototype","CORRECT_SETTER","setter","__proto__","checkCorrectnessOfIteration","INCORRECT_ITERATION","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","C","argumentsLength","mapfn","mapping","step","returnMethod","propertyKey","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","assign","nativeAssign","A","B","symbol","alphabet","forEach","chr","T","j","fromEntries","ARRAY_ITERATOR","kind","Arguments","iterate","k","Result","stopped","AS_ENTRIES","IS_ITERATOR","boundFunction","iterFn","log2","log","LN2","number","isInteger","isFinite","ArrayBufferViewCore","speciesConstructor","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","$slice","Int8Array","list","NATIVE_ARRAY_BUFFER","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isView","klass","isTypedArray","ARRAY","TypedArrayConstructor","property","exportTypedArrayStaticMethod","ArrayBuffer","DataView","SPECIES","defaultConstructor","Promise","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","NativePromise","redefineAll","setSpecies","anInstance","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","V8_VERSION","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","createEvent","dispatchEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","HANDLED","UNHANDLED","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","GLOBAL_CORE_JS_PROMISE","PromiseRejectionEvent","promise","FakePromise","then","all","isThenable","notify","isReject","notified","chain","reactions","ok","reaction","fail","exited","rejection","onHandleUnhandled","enter","exit","onUnhandled","reason","event","initEvent","IS_UNHANDLED","isUnhandled","emit","parent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","fetch","$promiseResolve","counter","remaining","alreadyCalled","race","CONSTRUCTOR_NAME","Constructor","IS_IOS","location","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","queue","ONREADYSTATECHANGE","defer","channel","port","run","runner","listener","post","postMessage","protocol","host","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","flush","head","last","toggle","node","createTextNode","observe","characterData","promiseCapability","PromiseCapability","$$resolve","$$reject","versions","v8","match","allSettled","status","NON_GENERIC","real","onFinally","isFunction","USE_NATIVE_URL","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","URLSearchParams","getInternalSearchParamsState","getState","getInternalURLState","pow","INVALID_AUTHORITY","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","EOF","parseHost","codePoints","parseIPv6","isSpecial","percentEncode","C0ControlPercentEncodeSet","parseIPv4","parts","partsLength","numbers","part","radix","ipv4","pop","parseInt","address","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","swap","char","findLongestZeroSequence","ipv6","maxIndex","maxLength","currStart","currLength","serializeHost","ignore0","unshift","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","username","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","seenAt","seenBracket","seenPasswordToken","bufferCodePoints","failure","query","fragment","codePoint","encodedCodePoints","shift","URLConstructor","urlString","baseState","searchParams","searchParamsState","updateSearchParams","updateURL","href","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","pathname","getPathname","getSearch","getSearchParams","hash","getHash","URLPrototype","output","accessorDescriptor","getter","toJSON","nativeCreateObjectURL","nativeRevokeObjectURL","revokeObjectURL","sort","maxInt","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexNonASCII","regexSeparators","OVERFLOW_ERROR","baseMinusTMin","stringFromCharCode","fromCharCode","ucs2decode","extra","digitToBasic","digit","adapt","delta","numPoints","firstTime","encode","inputLength","n","bias","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","t","qMinusT","baseMinusT","encoded","labels","label","getIterator","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","RegExp","percentDecode","sequence","deserialize","find","replacer","serialize","parseSearchParams","attributes","attribute","validateArgumentsLength","passed","required","URLSearchParamsIterator","Iterator","params","URLSearchParamsConstructor","init","entryIterator","entryNext","URLSearchParamsPrototype","append","splice","getAll","found","entriesIndex","sliceIndex","callback","body","headers","factory","SymbolPolyfill","description","noop","NumberIsNaN","rethrowAssertionErrorRejection","typeIsObject","createArrayFromList","elements","ArrayBufferCopy","dest","destOffset","srcOffset","IsFiniteNonNegativeNumber","IsNonNegativeNumber","Infinity","Call","CreateAlgorithmFromUnderlyingMethod","underlyingObject","methodName","algoArgCount","extraArgs","PromiseCall","fullArgs","promiseResolvedWith","InvokeOrNoop","promiseRejectedWith","TransferArrayBuffer","IsDetachedBuffer","ValidateAndNormalizeHighWaterMark","highWaterMark","MakeSizeAlgorithmFromSizeFunction","originalPromise","originalPromiseThen","originalPromiseResolve","originalPromiseReject","newPromise","PerformPromiseThen","uponPromise","uponFulfillment","uponRejection","transformPromiseWith","fulfillmentHandler","rejectionHandler","setPromiseIsHandledToTrue","QUEUE_MAX_ARRAY_SIZE","SimpleQueue","_cursor","_size","_front","_elements","_next","_back","oldBack","newBack","oldFront","newFront","oldCursor","newCursor","peek","front","cursor","ReadableStreamCreateReadResult","forAuthorCode","ReadableStreamReaderGenericInitialize","reader","_forAuthorCode","_ownerReadableStream","_reader","_state","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","_storedError","ReadableStreamReaderGenericCancel","ReadableStreamCancel","ReadableStreamReaderGenericRelease","defaultReaderClosedPromiseReject","defaultReaderClosedPromiseResetToRejected","readerLockException","_closedPromise","_closedPromise_resolve","_closedPromise_reject","defaultReaderClosedPromiseResolve","CancelSteps","PullSteps","AcquireReadableStreamDefaultReader","ReadableStreamDefaultReader","ReadableStreamAddReadRequest","readRequest","_resolve","_reject","_readRequests","ReadableStreamFulfillReadRequest","ReadableStreamGetNumReadRequests","ReadableStreamHasDefaultReader","IsReadableStreamDefaultReader","IsReadableStream","IsReadableStreamLocked","defaultReaderBrandCheckException","cancel","read","ReadableStreamDefaultReaderRead","releaseLock","_disturbed","_readableStreamController","_a","AsyncIteratorPrototype","asyncIterator","ReadableStreamAsyncIteratorPrototype","IsReadableStreamAsyncIterator","streamAsyncIteratorBrandCheckException","_asyncIteratorReader","return","_preventCancel","AcquireReadableStreamAsyncIterator","preventCancel","Boolean","DequeueValue","container","pair","_queue","_queueTotalSize","EnqueueValueWithSize","PeekQueueValue","ResetQueue","AbortSteps","ErrorSteps","WritableStream","underlyingSink","strategy","InitializeWritableStream","sizeAlgorithm","SetUpWritableStreamDefaultControllerFromUnderlyingSink","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","abort","WritableStreamAbort","WritableStreamCloseQueuedOrInFlight","WritableStreamClose","getWriter","AcquireWritableStreamDefaultWriter","WritableStreamDefaultWriter","CreateWritableStream","startAlgorithm","writeAlgorithm","closeAlgorithm","abortAlgorithm","WritableStreamDefaultController","SetUpWritableStreamDefaultController","_writer","_writableStreamController","_writeRequests","_inFlightWriteRequest","_closeRequest","_inFlightCloseRequest","_pendingAbortRequest","_backpressure","_promise","wasAlreadyErroring","_reason","_wasAlreadyErroring","WritableStreamStartErroring","closeRequest","writer","defaultWriterReadyPromiseResolve","WritableStreamDefaultControllerClose","WritableStreamAddWriteRequest","writeRequest","WritableStreamDealWithRejection","WritableStreamFinishErroring","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","_started","storedError","WritableStreamRejectCloseAndClosedPromiseIfNeeded","abortRequest","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","WritableStreamFinishInFlightClose","defaultWriterClosedPromiseResolve","WritableStreamFinishInFlightCloseWithError","WritableStreamMarkCloseRequestInFlight","WritableStreamMarkFirstWriteRequestInFlight","defaultWriterClosedPromiseReject","WritableStreamUpdateBackpressure","backpressure","defaultWriterReadyPromiseReset","_ownerWritableStream","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultWriterGetDesiredSize","_readyPromise","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamDefaultWriterCloseWithErrorPropagation","WritableStreamDefaultWriterEnsureClosedPromiseRejected","_closedPromiseState","defaultWriterClosedPromiseResetToRejected","_readyPromiseState","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","WritableStreamDefaultControllerGetDesiredSize","releasedError","chunkSize","WritableStreamDefaultControllerGetChunkSize","WritableStreamDefaultControllerWrite","IsWritableStreamDefaultController","_controlledWritableStream","WritableStreamDefaultControllerError","_abortAlgorithm","WritableStreamDefaultControllerClearAlgorithms","_strategySizeAlgorithm","_strategyHWM","_writeAlgorithm","_closeAlgorithm","WritableStreamDefaultControllerGetBackpressure","startResult","startPromise","WritableStreamDefaultControllerAdvanceQueueIfNeeded","chunkSizeE","WritableStreamDefaultControllerErrorIfNeeded","writeRecord","enqueueE","WritableStreamDefaultControllerProcessClose","WritableStreamDefaultControllerProcessWrite","sinkClosePromise","sinkWritePromise","desiredSize","_readyPromise_resolve","_readyPromise_reject","isAbortSignal","aborted","NativeDOMException","DOMException","isDOMExceptionConstructor","createDOMExceptionPolyfill","message","Error","captureStackTrace","DOMException$1","ReadableStreamPipeTo","preventClose","preventAbort","signal","shuttingDown","currentWrite","actions","shutdownWithAction","map","action","pipeLoop","resolveLoop","rejectLoop","pipeStep","isOrBecomesErrored","shutdown","isOrBecomesClosed","destClosed_1","waitForWritesToFinish","oldCurrentWrite","originalIsError","originalError","doTheRest","finalize","newError","isError","removeEventListener","ReadableStreamDefaultController","IsReadableStreamDefaultController","defaultControllerBrandCheckException","ReadableStreamDefaultControllerGetDesiredSize","ReadableStreamDefaultControllerCanCloseOrEnqueue","ReadableStreamDefaultControllerClose","enqueue","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","_cancelAlgorithm","ReadableStreamDefaultControllerClearAlgorithms","_controlledReadableStream","_closeRequested","ReadableStreamClose","ReadableStreamDefaultControllerCallPullIfNeeded","pendingPromise","shouldPull","ReadableStreamDefaultControllerShouldCallPull","_pulling","_pullAgain","pullPromise","_pullAlgorithm","ReadableStreamError","ReadableStreamDefaultControllerHasBackpressure","SetUpReadableStreamDefaultController","pullAlgorithm","cancelAlgorithm","SetUpReadableStreamDefaultControllerFromUnderlyingSource","underlyingSource","ReadableStreamTee","cloneForBranch2","reading","canceled1","canceled2","reason1","reason2","branch1","branch2","resolveCancelPromise","cancelPromise","value1","value2","cancel1Algorithm","compositeReason","cancelResult","cancel2Algorithm","CreateReadableStream","NumberIsInteger","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","_view","respond","bytesWritten","_associatedReadableByteStreamController","ReadableByteStreamControllerRespond","respondWithNewView","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","IsReadableByteStreamController","byteStreamControllerBrandCheckException","_byobRequest","_pendingPullIntos","firstDescriptor","byteOffset","bytesFilled","byteLength","byobRequest","SetUpReadableStreamBYOBRequest","ReadableByteStreamControllerGetDesiredSize","_controlledReadableByteStream","ReadableByteStreamControllerClose","ReadableByteStreamControllerEnqueue","ReadableByteStreamControllerError","ReadableByteStreamControllerClearAlgorithms","ReadableByteStreamControllerHandleQueueDrain","viewE","autoAllocateChunkSize","_autoAllocateChunkSize","bufferE","pullIntoDescriptor","elementSize","readerType","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerShouldCallPull","ReadableByteStreamControllerClearPendingPullIntos","ReadableByteStreamControllerInvalidateBYOBRequest","ReadableByteStreamControllerCommitPullIntoDescriptor","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","ReadableStreamFulfillReadIntoRequest","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerPullInto","BYTES_PER_ELEMENT","ReadableStreamAddReadIntoRequest","emptyView","ReadableByteStreamControllerRespondInClosedState","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","ReadableByteStreamControllerRespondInReadableState","remainderSize","remainder","ReadableByteStreamControllerRespondInternal","firstPendingPullInto","transferredBuffer","transferredView","SetUpReadableByteStreamController","SetUpReadableByteStreamControllerFromUnderlyingSource","underlyingByteSource","request","AcquireReadableStreamBYOBReader","ReadableStreamBYOBReader","readIntoRequest","_readIntoRequests","IsReadableStreamBYOBReader","byobReaderBrandCheckException","ReadableStreamBYOBReaderRead","ReadableStream","InitializeReadableStream","typeString","streamBrandCheckException$1","getReader","pipeThrough","_b","readable","_c","pipeTo","tee","branches","sourceCancelPromise","ByteLengthQueuingStrategy","CountQueuingStrategy","TransformStream","transformer","writableStrategy","readableStrategy","writableSizeFunction","writableHighWaterMark","readableSizeFunction","readableHighWaterMark","writableType","writableSizeAlgorithm","readableType","readableSizeAlgorithm","startPromise_resolve","InitializeTransformStream","SetUpTransformStreamDefaultControllerFromTransformer","_transformStreamController","IsTransformStream","streamBrandCheckException$2","_readable","_writable","TransformStreamDefaultSinkWriteAlgorithm","TransformStreamDefaultSinkAbortAlgorithm","TransformStreamDefaultSinkCloseAlgorithm","TransformStreamDefaultSourcePullAlgorithm","TransformStreamErrorWritableAndUnblockWrite","_backpressureChangePromise","_backpressureChangePromise_resolve","TransformStreamSetBackpressure","TransformStreamError","TransformStreamDefaultControllerClearAlgorithms","TransformStreamDefaultController","IsTransformStreamDefaultController","defaultControllerBrandCheckException$1","readableController","_controlledTransformStream","TransformStreamDefaultControllerEnqueue","TransformStreamDefaultControllerError","terminate","TransformStreamDefaultControllerTerminate","SetUpTransformStreamDefaultController","transformAlgorithm","flushAlgorithm","_transformAlgorithm","_flushAlgorithm","transformResultE","transformMethod","TransformStreamDefaultControllerPerformTransform","transformPromise","backpressureChangePromise","flushPromise","Map","collection","collectionStrong","InternalMetadataModule","inheritIfRequired","common","IS_MAP","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","nativeMethod","add","getConstructor","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","setStrong","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","fastKey","getWeakData","onFreeze","meta","preventExtensions","Wrapper","NewTarget","NewTargetPrototype","internalStateGetterFor","getEntry","previous","removed","prev","callbackfn","ITERATOR_NAME","getInternalCollectionState","Set","collectionWeak","enforceIternalState","IS_IE11","InternalWeakMap","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","frozen","ArrayIterationModule","$has","findIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","arraySpeciesCreate","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","filter","some","every","isArray","originalArray","WeakSet","codePointAt","fromCodePoint","nativeFromCodePoint","INCORRECT_LENGTH","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","array","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","foo","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","$forEach","SYMBOL","TO_PRIMITIVE","$stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","FORCED_JSON_STRINGIFY","stringify","space","$replacer","windowNames","getWindowNames","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","JSON","$padStart","WEBKIT_BUG","padStart","repeat","IS_END","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","count","$padEnd","padEnd","$values","TO_ENTRIES","$entries","Name","nameCache","nameValue","Cmd","cmdCache","cmdValue","Dict","nonSerializable","assignXref","key2","key3","getArray","getRaw","getKeys","getRawValues","mergeSubDicts","mergedDict","dict","subDict","refCache","gen","refValue","put","remove","putAlias","isName","v1","v2","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","manuallyTriggered","cleanup","requestRange","sendProgressiveData","updatePassword","createValidAbsoluteUrl","chunks","onReceiveData","begin","beginChunk","endChunk","curChunk","onReceiveProgressiveData","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","b0","getBytes","forceClamped","strEnd","subarray","peekedByte","peekBytes","getByteRange","skip","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupedChunk","ranges","requestRanges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","lastChunk","onError","getBeginChunk","getEndChunk","lookup","initializer","stopWhenFound","LOOP_LIMIT","loopCount","ROMAN_NUMBER_MAP","lowerCase","romanBuf","romanStr","offset","ch","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","annotation","idCounters","_getInheritableProperty","isDict","dictArray","_getBoundingBox","box","streams","isStream","partialEvaluator","idFactory","fontCache","builtInCMapCache","globalImageCache","newRefsPromises","isAnnotationRenderable","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","dataPromises","pageListPromise","opList","transparency","resources","operatorList","annotations","pageOpList","opListPromises","extractTextContent","getAnnotationsData","annotationsData","isNum","cropBox","isArrayEqual","parsedAnnotations","annotationPromises","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","isArrayBuffer","parse","MAX_PDF_VERSION_LENGTH","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","field","isSignature","isInvisible","_getLinearizationPage","linearization","catalog","pageDict","globalIdFactory","Linearization","err","startXRefLength","isWhiteSpace","num","formInfo","hasAcroForm","hasXfa","acroForm","xfa","fields","hasFields","sigFlags","hasOnlyDocumentSignatures","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","infoDict","customValue","isBool","idArray","calculateMD5","fingerprintBuf","hex","isRef","root","items","processed","blackColor","outlineDict","Catalog","destDict","resultObj","title","flags","color","rgbColor","ColorSpace","outlineItem","unsafeUrl","newWindow","bold","italic","permissions","_readOptionalContentConfig","onParsed","contentGroupRefs","nestedLevels","order","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","groupRef","nestedName","parseOrder","MAX_NESTED_LEVELS","config","creator","on","parseOnOff","off","groups","getDestination","fetchDestination","pageLabels","prefix","numberTree","nums","currentLabel","currentIndex","labelDict","s","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","jj","translatedFonts","translatedFont","getPageDict","nodesToVisit","visitedNodes","pageKidsCountCache","currentPageIndex","currentNode","objId","kids","getPageIndex","isRefsEqual","parentRef","kidPromises","kid","streamRef","suppressEncryption","subtype","stringToUTF8String","bytesToString","pagesObj","defaultConfig","groupsData","groupRefs","group","dests","pageLayout","pageMode","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","isValid","openAction","attachments","nameTree","fs","jsDict","js","appendIfJavaScriptDict","actionType","actionName","addDefaultProtocolToUrl","urlDict","remoteDest","namedAction","jsAction","URL_OPEN_METHODS","regex","jsUrl","tryConvertUrlEncoding","XRef","streamTypes","fontTypes","getNewRef","resetNewRef","setStartXRef","trailerDict","ids","fileId","processXRefTable","entryNum","streamPos","parser","parserBuf1","parserBuf2","isCmd","readXRefTable","tableState","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","indexObjects","TAB","LF","CR","SPACE","PERCENT","what","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","uncompressed","contentLength","startPos","endPos","checkPos","tokenStr","objToken","xrefTagOffset","lexer","allowStreams","recoveryMode","rootDict","readXRef","startXRefParsedCache","xrefEntry","fetchIfRef","cacheEntry","fetchUncompressed","obj1","obj2","obj3","fetchCompressed","tableOffset","getCatalogObj","kidsOrEntries","MAX_LEVELS","l","limits","tmp","currentKey","mm","FileSpec","pickPlatformItem","fileObj","ObjectLoader","mayHaveChildren","rawValue","nodesToRevisit","pendingRequests","baseStreams","foundMissingData","addChildren","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","cipherTransform","getObj","buf1","isEOF","findDefaultInlineStreamEnd","I","NUL","maybeEIPos","followingBytes","nextObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheKey","computeAdler32","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","lastByte","filterArray","paramsArray","makeFilter","xrefStreamStats","earlyChange","specialChars","knownCommands","eNotation","divideBy","sign","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","isFirstHex","firstDigit","secondDigit","comment","knownCommandFound","possibleCommand","currentChar","beginInlineImagePos","allowZeroValue","linDict","hints","hintsLength","hint","getInt","getHints","objectNumberFirst","endFirst","mainXRefEntriesOffset","pageFirst","Stream","arrayBuffer","getByte","getUint16","getInt32","peekByte","moveStart","StringStream","DecodeStream","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","buffer2","bufEnd","getBaseStreams","StreamsSequenceStream","bufferLength","newLength","FlateStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","codes","table","maxLen","codeLen","codeVal","lengths","code2","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","repeatLength","code1","dist","PredictorStream","predictor","colors","bits","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","pixBytes","prevRow","up","upLeft","left","pa","pb","pc","DecryptStream","hasMoreData","decrypt","Ascii85Stream","TILDA_CHAR","Z_LOWER_CHAR","AsciiHexStream","UPSTREAM_BLOCK_SIZE","maxDecodeLength","RunLengthStream","repeatHeader","LZWStream","maxLzwDictionarySize","lzwState","codeLength","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","cachedData","blockSize","estimatedDecodedSize","decodedSizeDelta","prevCode","decodedLength","currentBufferLength","hasPrev","NullStream","CCITTFaxStream","K","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","CCITTFaxDecoder","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","readNextChar","refLine","codingLine","refPos","blackPixels","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","Jbig2Stream","jbig2Image","globalsStream","globals","Jbig2Image","ContextCache","getContexts","DecodingContext","decoder","contexts","contextCache","bit","readBits","SegmentTypes","CodingTemplates","y","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","width","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","currentWidth","totalWidth","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","maxWidth","t2","deltaS","collectiveWidth","patterns","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionX","regionY","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","header","height","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","imgData","mask","SimpleSegmentVisitor","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","line","HuffmanTreeNode","buildTree","decodeNode","htOffset","lines","HuffmanTable","decode","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","Reader","readBit","numBits","byteAlign","runCodesTable","repeatedLength","numberOfRepeats","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","bp","cx_index","cx_mps","qeTableIcx","qeIcx","JpegStream","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","JpegImage","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","maybeScanLines","blockRow","receive","decodeHuffman","component","diff","receiveAndExtend","rs","z","blockOffset","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","h","decodeMcu","fileMarker","findNextFileMarker","partialMsg","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","invalid","marker","newMarker","dnlScanLines","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","readDataBlock","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_convertYccToRgb","Y","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","JpxStream","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxImage","SubbandsGainLog2","LL","LH","HL","HH","headerSize","lbox","tbox","jumpDataLength","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","resolution","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","layerNumber","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","posX","pxIndex","precinctIterationSizes","posY","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","scale","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","bufferSize","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","x0","y0","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","copyCoefficients","top","resultImages","transformedTiles","transformTile","tile0","out","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","y1","y2","g","qcdOrQcc","TagTree","levelsLength","level","currentLevel","incrementValue","nextLevel","InclusionTree","stopValue","propagateValues","levelIndex","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","Transform","ll","j1","j2","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","IrreversibleTransform","alpha","beta","gamma","K_","current","ReversibleTransform","ARCFourCipher","keyLength","encryptBlock","tmp2","h0","h1","h2","h3","paddedLength","padded","w","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","high","low","not","lowAdd","highAdd","copyTo","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","t1","sigmaPrime","sigma","maj","calculateSHA512","mode384","tmp1","tmp3","calculateSHA384","NullCipher","decryptBlock","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","outputLength","lastBlock","psLen","cipher","rcon","t3","t4","PDF17","array1","array2","checkOwnerPassword","hashData","ownerValidationSalt","compareByteArrays","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","arrayLength","userBytes","k1","concatArrays","calculatePDF20Hash","CipherTransform","createStream","decryptString","encryptString","strLen","pad","crypto","buf","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","cf","cryptFilter","cfm","buildObjectKey","createCipherTransform","buildCipherConstructor","cipherConstructor","COMPONENTS","xRatio","w1","yRatio","newIndex","xScaled","w1Scanline","oldIndex","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","originalWidth","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","csRef","csName","localColorSpaceCache","localColorSpace","parsedColorSpace","cachedColorSpace","cs","colorSpaces","resourcesCS","whitePoint","blackPoint","matrix","numComps","alt","altCS","baseCS","hiVal","tintFn","pdfFunctionFactory","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","outputDelta","lookupPos","decodeMap","DeviceCmykCS","convertToRgb","CalGrayCS","AG","L","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","AGR","BGG","CGB","X","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","as","bs","maxVal","M","N","fn_g","getByName","getByRef","onlyRefs","shouldCache","pageIndexSet","GlobalImageCache","addPageIndex","setData","onlyData","parameters","fieldType","quadPoints","quadPointsLists","annotationFlags","borderStyle","contents","hasAppearance","modificationDate","_hasFlag","_isViewable","_isPrintable","setContents","setModificationDate","setFlags","hasFlag","setRectangle","setColor","setBorderStyle","dictType","setAppearance","appearanceStates","normalAppearanceState","appearance","appearanceDict","bbox","getTransformMatrix","setWidth","maxHeight","setStyle","setDashArray","dashArray","allZeros","validNumber","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","setCreationDate","fieldValue","_constructFieldName","fieldName","loopDict","_decodeFormValue","formValue","hasFieldFlag","evaluator","AP","originalTransform","newTransform","bufferOriginal","writeDict","bufferNew","isPassword","defaultPadding","hPadding","totalHeight","fontInfo","fontSize","descent","vPadding","defaultAppearance","alignment","escapeString","renderedText","initialState","fontName","clone","_computeFontSize","em","capHeight","fontRegex","_renderText","glyphs","glyph","maximumLength","_getCombAppearance","combWidth","renderedComb","_getMultilineAppearance","text","padding","_splitLine","whitespace","lastSpacePos","startChunk","charWidth","savedAppearance","defaultValue","parentBuffer","parentTransform","_processCheckBox","customAppearance","normalAppearance","exportValues","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","option","isOptionArray","exportValue","displayValue","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentFlags","rawVertices","originalInkLists","QueueOptimizer","pattern","checkFn","iterateFn","processFn","iFirstPIMXO","iFirstSave","argsArray","imageMask","fnArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","dataOffset","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iTransform","iPIMXO","transformArgs","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iCurr","_optimize","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","addOp","addDependency","addDependencies","addOpList","getIR","transfers","writeValue","roundedValue","writeArray","numberToString","writeStream","time","md5Buffer","filesize","md5BufferLen","writeString","newXref","refForXrefTable","originalData","baseOffset","xrefTableData","indexes","maxOffset","md5","computeMD5","offsetSize","sizes","structSize","tableLength","bufferLen","footer","writeInt","DefaultPartialEvaluatorOptions","PatternType","TILING","SHADING","deferred","parsingArray","maybeBM","normalizeBlendMode","TimeSlotManager","newOptions","newEvaluator","hasBlendModes","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","readableStream","pump","xobj","optionalContent","groupOptions","isolated","knockout","groupSubtype","colorSpace","_sendImgData","cacheGlobally","isInline","image","imageRef","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","res","PDFImage","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","stateManager","handleTransferFunction","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","tilingOpList","patternResources","patternDict","handleSetFont","fontArgs","translated","loadedName","extraProperties","handleText","isAddToPathSet","PartialEvaluator","ensureStateFont","gStateRef","gState","isSimpleGState","gStateObj","gStateKeys","localGStateCache","loadFont","errorFont","fontRef","fontRes","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translatedPromise","xrefFontStats","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","patternName","typeNum","shading","Pattern","contentProperties","optionalContentType","optionalContentGroups","groupIds","ocg","expression","policy","xobjs","preprocessor","timeSlotManager","promiseBody","operation","localImage","resolveXObject","globalImage","combinedGlyphs","arrLength","arrItem","shadingRes","patternIR","localGStateObj","extGState","closePendingRestoreOPS","seenStyles","getTextContent","WhitespaceRegexp","textContent","styles","textContentItem","initialized","vertical","lastAdvanceWidth","lastAdvanceHeight","textAdvanceScale","spaceWidth","fakeSpaceMin","fakeMultiSpaceMin","fakeMultiSpaceMax","textRunBreakAllowed","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","emptyXObjectCache","emptyGStateCache","textState","fontFamily","ascent","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","textChunk","bidiResult","bidi","replaceWhitespace","dir","ensureTextContentItem","glyphWidth","glyphUnicode","NormalizedUnicodes","reverseIfRtl","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","runBidiTransform","enqueueChunk","fontNameArg","fontSizeArg","flushTextContentItem","isSameTextLine","advance","buildTextContentItem","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","gStateFont","resolveGState","extractDataStructures","toUnicode","baseDict","toUnicodePromise","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","differences","baseEncodingName","encoding","diffEncoding","getEncoding","isSymbolicFont","FontFlags","isNonsymbolicFont","readToUnicode","builtToUnicode","_buildSimpleFontToUnicode","forceGlyphs","glyphName","glyphsUnicodeMap","codeStr","unicode","getUnicodeForGlyph","baseEncoding","buildToUnicode","ucs2CMapName","fetchBuiltInCMap","useCMap","cMap","cid","ucs2","ucs2CMap","cmapObj","cmap","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","widths","vmetrics","defaultVMetrics","vmetric","firstChar","parseFloat","baseFontName","metrics","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","charCode","widthsByGlyphName","preEvaluateFont","composite","df","diffLength","diffBuf","diffEntry","lastChar","uint8array","translateFont","maxCharIndex","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","fixedPitch","fontMatrix","xHeight","italicAngle","isType3Font","cidEncoding","cMapPromise","accent","send","fallback","loadType3Data","type3Options","type3Evaluator","type3Dependencies","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","glyphStream","dummyOperatorList","old","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","calcTextLineMatrixAdvance","txDiff","tyDiff","denominator","calcRenderMatrix","getOPMap","numArgs","variableArgs","EvaluatorPreprocessor","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","builtInCMap","addCodespaceRange","mapCidRange","dstLow","mapBfRange","mapBfRangeToArray","mapOne","contains","charCodeOf","readCharCode","codespaceRanges","nn","codespaceRange","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","readSigned","readHex","readHexNumber","stack","sp","readHexSigned","readString","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","useCodespaceRanges","cMapData","compressionType","parseCMap","createBuiltInCMap","parsedCMap","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","SEAC_ANALYSIS_ENABLED","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","builtInEncoding","Glyph","ToUnicodeMap","amend","IdentityToUnicodeMap","OpenTypeFileBuilder","maxPower2","searchRange","rangeShift","entrySize","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","toArray","sfnt","tables","tablesNames","numTables","tableOffsets","writeData","string32","writeInt16","tableName","checksum","quad","writeInt32","addTable","Font","fallbackName","getFontFileType","cff","adjustWidths","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","toFontChar","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","charCodeToGlyphId","hasGlyph","fontCharCode","codeIndices","getRanges","string16","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","typoAscent","typoDescent","winAscent","winDescent","angle","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","mimetype","renderer","FontRendererFactory","exportData","exportDataProperties","fallbackToSystemFont","nonStdFontMap","isStandardFont","GlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","SupplementalGlyphMapForCalibri","isIdentityUnicode","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","readTableEntry","previousPosition","ttf","entrySelector","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","format","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","entryCount","numOfMetrics","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","signedInt16","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","glyphDataLength","int32","indexToLocFormat","int16","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","valid","glyphNames","glyphNameIndexes","customNames","propertiesObj","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","isGlyphLocationsLong","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","StandardEncoding","standardGlyphName","recoverGlyphName","unicodeOrCharCode","MacRomanEncoding","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","possibleSpaceReplacements","charcode","charToGlyph","widthCode","isInFont","mapSpecialUnicodeValues","operatorListId","fontChar","charsToGlyphs","charsCache","charsCacheKey","chars","isSpace","ErrorFont","Type1Font","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","subrs","getCharset","getGlyphMapping","charstringsLen","type1FontGlyphMapping","hasGlyphId","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","topDict","charsetArray","CFFStandardStrings","charStringsIndex","privateDict","subrIndex","CFFFont","charsets","MAX_SUBR_NESTING","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","hdrSize","offSize","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","raw","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","glyphZero","getSID","setByKey","valueLength","setByName","hasName","removeByName","keyToNameMap","nameToKeyMap","defaults","types","opcodes","layout","CFFTopDict","CFFDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","getFDIndex","glyphIndex","isTracking","track","setEntryLocation","offset1","offset2","offset3","offset4","compiled","topDictTracker","fontDictTrackers","encodeNumber","encodeFloat","CFFCompiler","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","compileDict","offsetTracker","compileStringIndex","compileCharStrings","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getLookupTableFactory","getGlyphsUnicode","AE","AEacute","AEmacron","AEsmall","Aacute","Aacutesmall","Abreve","Abreveacute","Abrevecyrillic","Abrevedotbelow","Abrevegrave","Abrevehookabove","Abrevetilde","Acaron","Acircle","Acircumflex","Acircumflexacute","Acircumflexdotbelow","Acircumflexgrave","Acircumflexhookabove","Acircumflexsmall","Acircumflextilde","Acute","Acutesmall","Acyrillic","Adblgrave","Adieresis","Adieresiscyrillic","Adieresismacron","Adieresissmall","Adotbelow","Adotmacron","Agrave","Agravesmall","Ahookabove","Aiecyrillic","Ainvertedbreve","Alpha","Alphatonos","Amacron","Amonospace","Aogonek","Aring","Aringacute","Aringbelow","Aringsmall","Asmall","Atilde","Atildesmall","Aybarmenian","Bcircle","Bdotaccent","Bdotbelow","Becyrillic","Benarmenian","Beta","Bhook","Blinebelow","Bmonospace","Brevesmall","Bsmall","Btopbar","Caarmenian","Cacute","Caron","Caronsmall","Ccaron","Ccedilla","Ccedillaacute","Ccedillasmall","Ccircle","Ccircumflex","Cdot","Cdotaccent","Cedillasmall","Chaarmenian","Cheabkhasiancyrillic","Checyrillic","Chedescenderabkhasiancyrillic","Chedescendercyrillic","Chedieresiscyrillic","Cheharmenian","Chekhakassiancyrillic","Cheverticalstrokecyrillic","Chi","Chook","Circumflexsmall","Cmonospace","Coarmenian","Csmall","D","DZ","DZcaron","Daarmenian","Dafrican","Dcaron","Dcedilla","Dcircle","Dcircumflexbelow","Dcroat","Ddotaccent","Ddotbelow","Decyrillic","Deicoptic","Delta","Deltagreek","Dhook","Dieresis","DieresisAcute","DieresisGrave","Dieresissmall","Digammagreek","Djecyrillic","Dlinebelow","Dmonospace","Dotaccentsmall","Dslash","Dsmall","Dtopbar","Dz","Dzcaron","Dzeabkhasiancyrillic","Dzecyrillic","Dzhecyrillic","Eacute","Eacutesmall","Ebreve","Ecaron","Ecedillabreve","Echarmenian","Ecircle","Ecircumflex","Ecircumflexacute","Ecircumflexbelow","Ecircumflexdotbelow","Ecircumflexgrave","Ecircumflexhookabove","Ecircumflexsmall","Ecircumflextilde","Ecyrillic","Edblgrave","Edieresis","Edieresissmall","Edot","Edotaccent","Edotbelow","Efcyrillic","Egrave","Egravesmall","Eharmenian","Ehookabove","Eightroman","Einvertedbreve","Eiotifiedcyrillic","Elcyrillic","Elevenroman","Emacron","Emacronacute","Emacrongrave","Emcyrillic","Emonospace","Encyrillic","Endescendercyrillic","Eng","Enghecyrillic","Enhookcyrillic","Eogonek","Eopen","Epsilon","Epsilontonos","Ercyrillic","Ereversed","Ereversedcyrillic","Escyrillic","Esdescendercyrillic","Esh","Esmall","Eta","Etarmenian","Etatonos","Eth","Ethsmall","Etilde","Etildebelow","Euro","Ezh","Ezhcaron","Ezhreversed","Fcircle","Fdotaccent","Feharmenian","Feicoptic","Fhook","Fitacyrillic","Fiveroman","Fmonospace","Fourroman","Fsmall","G","GBsquare","Gacute","Gamma","Gammaafrican","Gangiacoptic","Gbreve","Gcaron","Gcedilla","Gcircle","Gcircumflex","Gcommaaccent","Gdot","Gdotaccent","Gecyrillic","Ghadarmenian","Ghemiddlehookcyrillic","Ghestrokecyrillic","Gheupturncyrillic","Ghook","Gimarmenian","Gjecyrillic","Gmacron","Gmonospace","Grave","Gravesmall","Gsmall","Gsmallhook","Gstroke","H","H18533","H18543","H18551","H22073","HPsquare","Haabkhasiancyrillic","Hadescendercyrillic","Hardsigncyrillic","Hbar","Hbrevebelow","Hcedilla","Hcircle","Hcircumflex","Hdieresis","Hdotaccent","Hdotbelow","Hmonospace","Hoarmenian","Horicoptic","Hsmall","Hungarumlaut","Hungarumlautsmall","Hzsquare","IAcyrillic","IJ","IUcyrillic","Iacute","Iacutesmall","Ibreve","Icaron","Icircle","Icircumflex","Icircumflexsmall","Icyrillic","Idblgrave","Idieresis","Idieresisacute","Idieresiscyrillic","Idieresissmall","Idot","Idotaccent","Idotbelow","Iebrevecyrillic","Iecyrillic","Ifraktur","Igrave","Igravesmall","Ihookabove","Iicyrillic","Iinvertedbreve","Iishortcyrillic","Imacron","Imacroncyrillic","Imonospace","Iniarmenian","Iocyrillic","Iogonek","Iota","Iotaafrican","Iotadieresis","Iotatonos","Ismall","Istroke","Itilde","Itildebelow","Izhitsacyrillic","Izhitsadblgravecyrillic","J","Jaarmenian","Jcircle","Jcircumflex","Jecyrillic","Jheharmenian","Jmonospace","Jsmall","KBsquare","KKsquare","Kabashkircyrillic","Kacute","Kacyrillic","Kadescendercyrillic","Kahookcyrillic","Kappa","Kastrokecyrillic","Kaverticalstrokecyrillic","Kcaron","Kcedilla","Kcircle","Kcommaaccent","Kdotbelow","Keharmenian","Kenarmenian","Khacyrillic","Kheicoptic","Khook","Kjecyrillic","Klinebelow","Kmonospace","Koppacyrillic","Koppagreek","Ksicyrillic","Ksmall","LJ","Lacute","Lambda","Lcaron","Lcedilla","Lcircle","Lcircumflexbelow","Lcommaaccent","Ldot","Ldotaccent","Ldotbelow","Ldotbelowmacron","Liwnarmenian","Lj","Ljecyrillic","Llinebelow","Lmonospace","Lslash","Lslashsmall","Lsmall","MBsquare","Macron","Macronsmall","Macute","Mcircle","Mdotaccent","Mdotbelow","Menarmenian","Mmonospace","Msmall","Mturned","Mu","NJ","Nacute","Ncaron","Ncedilla","Ncircle","Ncircumflexbelow","Ncommaaccent","Ndotaccent","Ndotbelow","Nhookleft","Nineroman","Nj","Njecyrillic","Nlinebelow","Nmonospace","Nowarmenian","Nsmall","Ntilde","Ntildesmall","Nu","OE","OEsmall","Oacute","Oacutesmall","Obarredcyrillic","Obarreddieresiscyrillic","Obreve","Ocaron","Ocenteredtilde","Ocircle","Ocircumflex","Ocircumflexacute","Ocircumflexdotbelow","Ocircumflexgrave","Ocircumflexhookabove","Ocircumflexsmall","Ocircumflextilde","Ocyrillic","Odblacute","Odblgrave","Odieresis","Odieresiscyrillic","Odieresissmall","Odotbelow","Ogoneksmall","Ograve","Ogravesmall","Oharmenian","Ohm","Ohookabove","Ohorn","Ohornacute","Ohorndotbelow","Ohorngrave","Ohornhookabove","Ohorntilde","Ohungarumlaut","Oi","Oinvertedbreve","Omacron","Omacronacute","Omacrongrave","Omega","Omegacyrillic","Omegagreek","Omegaroundcyrillic","Omegatitlocyrillic","Omegatonos","Omicron","Omicrontonos","Omonospace","Oneroman","Oogonek","Oogonekmacron","Oopen","Oslash","Oslashacute","Oslashsmall","Osmall","Ostrokeacute","Otcyrillic","Otilde","Otildeacute","Otildedieresis","Otildesmall","Pacute","Pcircle","Pdotaccent","Pecyrillic","Peharmenian","Pemiddlehookcyrillic","Phi","Phook","Pi","Piwrarmenian","Pmonospace","Psi","Psicyrillic","Psmall","Q","Qcircle","Qmonospace","Qsmall","R","Raarmenian","Racute","Rcaron","Rcedilla","Rcircle","Rcommaaccent","Rdblgrave","Rdotaccent","Rdotbelow","Rdotbelowmacron","Reharmenian","Rfraktur","Rho","Ringsmall","Rinvertedbreve","Rlinebelow","Rmonospace","Rsmall","Rsmallinverted","Rsmallinvertedsuperior","SF010000","SF020000","SF030000","SF040000","SF050000","SF060000","SF070000","SF080000","SF090000","SF100000","SF110000","SF190000","SF200000","SF210000","SF220000","SF230000","SF240000","SF250000","SF260000","SF270000","SF280000","SF360000","SF370000","SF380000","SF390000","SF400000","SF410000","SF420000","SF430000","SF440000","SF450000","SF460000","SF470000","SF480000","SF490000","SF500000","SF510000","SF520000","SF530000","SF540000","Sacute","Sacutedotaccent","Sampigreek","Scaron","Scarondotaccent","Scaronsmall","Scedilla","Schwa","Schwacyrillic","Schwadieresiscyrillic","Scircle","Scircumflex","Scommaaccent","Sdotaccent","Sdotbelow","Sdotbelowdotaccent","Seharmenian","Sevenroman","Shaarmenian","Shacyrillic","Shchacyrillic","Sheicoptic","Shhacyrillic","Shimacoptic","Sigma","Sixroman","Smonospace","Softsigncyrillic","Ssmall","Stigmagreek","Tau","Tbar","Tcaron","Tcedilla","Tcircle","Tcircumflexbelow","Tcommaaccent","Tdotaccent","Tdotbelow","Tecyrillic","Tedescendercyrillic","Tenroman","Tetsecyrillic","Theta","Thook","Thorn","Thornsmall","Threeroman","Tildesmall","Tiwnarmenian","Tlinebelow","Tmonospace","Toarmenian","Tonefive","Tonesix","Tonetwo","Tretroflexhook","Tsecyrillic","Tshecyrillic","Tsmall","Twelveroman","Tworoman","U","Uacute","Uacutesmall","Ubreve","Ucaron","Ucircle","Ucircumflex","Ucircumflexbelow","Ucircumflexsmall","Ucyrillic","Udblacute","Udblgrave","Udieresis","Udieresisacute","Udieresisbelow","Udieresiscaron","Udieresiscyrillic","Udieresisgrave","Udieresismacron","Udieresissmall","Udotbelow","Ugrave","Ugravesmall","Uhookabove","Uhorn","Uhornacute","Uhorndotbelow","Uhorngrave","Uhornhookabove","Uhorntilde","Uhungarumlaut","Uhungarumlautcyrillic","Uinvertedbreve","Ukcyrillic","Umacron","Umacroncyrillic","Umacrondieresis","Umonospace","Uogonek","Upsilon","Upsilon1","Upsilonacutehooksymbolgreek","Upsilonafrican","Upsilondieresis","Upsilondieresishooksymbolgreek","Upsilonhooksymbol","Upsilontonos","Uring","Ushortcyrillic","Usmall","Ustraightcyrillic","Ustraightstrokecyrillic","Utilde","Utildeacute","Utildebelow","Vcircle","Vdotbelow","Vecyrillic","Vewarmenian","Vhook","Vmonospace","Voarmenian","Vsmall","Vtilde","W","Wacute","Wcircle","Wcircumflex","Wdieresis","Wdotaccent","Wdotbelow","Wgrave","Wmonospace","Wsmall","Xcircle","Xdieresis","Xdotaccent","Xeharmenian","Xi","Xmonospace","Xsmall","Yacute","Yacutesmall","Yatcyrillic","Ycircle","Ycircumflex","Ydieresis","Ydieresissmall","Ydotaccent","Ydotbelow","Yericyrillic","Yerudieresiscyrillic","Ygrave","Yhook","Yhookabove","Yiarmenian","Yicyrillic","Yiwnarmenian","Ymonospace","Ysmall","Ytilde","Yusbigcyrillic","Yusbigiotifiedcyrillic","Yuslittlecyrillic","Yuslittleiotifiedcyrillic","Zaarmenian","Zacute","Zcaron","Zcaronsmall","Zcircle","Zcircumflex","Zdot","Zdotaccent","Zdotbelow","Zecyrillic","Zedescendercyrillic","Zedieresiscyrillic","Zeta","Zhearmenian","Zhebrevecyrillic","Zhecyrillic","Zhedescendercyrillic","Zhedieresiscyrillic","Zlinebelow","Zmonospace","Zsmall","Zstroke","aabengali","aacute","aadeva","aagujarati","aagurmukhi","aamatragurmukhi","aarusquare","aavowelsignbengali","aavowelsigndeva","aavowelsigngujarati","abbreviationmarkarmenian","abbreviationsigndeva","abengali","abopomofo","abreve","abreveacute","abrevecyrillic","abrevedotbelow","abrevegrave","abrevehookabove","abrevetilde","acaron","acircle","acircumflex","acircumflexacute","acircumflexdotbelow","acircumflexgrave","acircumflexhookabove","acircumflextilde","acute","acutebelowcmb","acutecmb","acutecomb","acutedeva","acutelowmod","acutetonecmb","acyrillic","adblgrave","addakgurmukhi","adeva","adieresis","adieresiscyrillic","adieresismacron","adotbelow","adotmacron","ae","aeacute","aekorean","aemacron","afii00208","afii08941","afii10017","afii10018","afii10019","afii10020","afii10021","afii10022","afii10023","afii10024","afii10025","afii10026","afii10027","afii10028","afii10029","afii10030","afii10031","afii10032","afii10033","afii10034","afii10035","afii10036","afii10037","afii10038","afii10039","afii10040","afii10041","afii10042","afii10043","afii10044","afii10045","afii10046","afii10047","afii10048","afii10049","afii10050","afii10051","afii10052","afii10053","afii10054","afii10055","afii10056","afii10057","afii10058","afii10059","afii10060","afii10061","afii10062","afii10063","afii10064","afii10065","afii10066","afii10067","afii10068","afii10069","afii10070","afii10071","afii10072","afii10073","afii10074","afii10075","afii10076","afii10077","afii10078","afii10079","afii10080","afii10081","afii10082","afii10083","afii10084","afii10085","afii10086","afii10087","afii10088","afii10089","afii10090","afii10091","afii10092","afii10093","afii10094","afii10095","afii10096","afii10097","afii10098","afii10099","afii10100","afii10101","afii10102","afii10103","afii10104","afii10105","afii10106","afii10107","afii10108","afii10109","afii10110","afii10145","afii10146","afii10147","afii10148","afii10192","afii10193","afii10194","afii10195","afii10196","afii10831","afii10832","afii10846","afii299","afii300","afii301","afii57381","afii57388","afii57392","afii57393","afii57394","afii57395","afii57396","afii57397","afii57398","afii57399","afii57400","afii57401","afii57403","afii57407","afii57409","afii57410","afii57411","afii57412","afii57413","afii57414","afii57415","afii57416","afii57417","afii57418","afii57419","afii57420","afii57421","afii57422","afii57423","afii57424","afii57425","afii57426","afii57427","afii57428","afii57429","afii57430","afii57431","afii57432","afii57433","afii57434","afii57440","afii57441","afii57442","afii57443","afii57444","afii57445","afii57446","afii57448","afii57449","afii57450","afii57451","afii57452","afii57453","afii57454","afii57455","afii57456","afii57457","afii57458","afii57470","afii57505","afii57506","afii57507","afii57508","afii57509","afii57511","afii57512","afii57513","afii57514","afii57519","afii57534","afii57636","afii57645","afii57658","afii57664","afii57665","afii57666","afii57667","afii57668","afii57669","afii57670","afii57671","afii57672","afii57673","afii57674","afii57675","afii57676","afii57677","afii57678","afii57679","afii57680","afii57681","afii57682","afii57683","afii57684","afii57685","afii57686","afii57687","afii57688","afii57689","afii57690","afii57694","afii57695","afii57700","afii57705","afii57716","afii57717","afii57718","afii57723","afii57793","afii57794","afii57795","afii57796","afii57797","afii57798","afii57799","afii57800","afii57801","afii57802","afii57803","afii57804","afii57806","afii57807","afii57839","afii57841","afii57842","afii57929","afii61248","afii61289","afii61352","afii61573","afii61574","afii61575","afii61664","afii63167","afii64937","agrave","agujarati","agurmukhi","ahiragana","ahookabove","aibengali","aibopomofo","aideva","aiecyrillic","aigujarati","aigurmukhi","aimatragurmukhi","ainarabic","ainfinalarabic","aininitialarabic","ainmedialarabic","ainvertedbreve","aivowelsignbengali","aivowelsigndeva","aivowelsigngujarati","akatakana","akatakanahalfwidth","akorean","alef","alefarabic","alefdageshhebrew","aleffinalarabic","alefhamzaabovearabic","alefhamzaabovefinalarabic","alefhamzabelowarabic","alefhamzabelowfinalarabic","alefhebrew","aleflamedhebrew","alefmaddaabovearabic","alefmaddaabovefinalarabic","alefmaksuraarabic","alefmaksurafinalarabic","alefmaksurainitialarabic","alefmaksuramedialarabic","alefpatahhebrew","alefqamatshebrew","aleph","allequal","alphatonos","amacron","amonospace","ampersand","ampersandmonospace","ampersandsmall","amsquare","anbopomofo","angbopomofo","angbracketleft","angbracketright","angkhankhuthai","anglebracketleft","anglebracketleftvertical","anglebracketright","anglebracketrightvertical","angleleft","angleright","angstrom","anoteleia","anudattadeva","anusvarabengali","anusvaradeva","anusvaragujarati","aogonek","apaatosquare","aparen","apostrophearmenian","apostrophemod","apple","approaches","approxequal","approxequalorimage","approximatelyequal","araeaekorean","araeakorean","arc","arighthalfring","aring","aringacute","aringbelow","arrowboth","arrowdashdown","arrowdashleft","arrowdashright","arrowdashup","arrowdblboth","arrowdbldown","arrowdblleft","arrowdblright","arrowdblup","arrowdown","arrowdownleft","arrowdownright","arrowdownwhite","arrowheaddownmod","arrowheadleftmod","arrowheadrightmod","arrowheadupmod","arrowhorizex","arrowleft","arrowleftdbl","arrowleftdblstroke","arrowleftoverright","arrowleftwhite","arrowright","arrowrightdblstroke","arrowrightheavy","arrowrightoverleft","arrowrightwhite","arrowtableft","arrowtabright","arrowup","arrowupdn","arrowupdnbse","arrowupdownbase","arrowupleft","arrowupleftofdown","arrowupright","arrowupwhite","arrowvertex","asciicircum","asciicircummonospace","asciitilde","asciitildemonospace","ascript","ascriptturned","asmallhiragana","asmallkatakana","asmallkatakanahalfwidth","asterisk","asteriskaltonearabic","asteriskarabic","asteriskmath","asteriskmonospace","asterisksmall","asterism","asuperior","asymptoticallyequal","atilde","atmonospace","atsmall","aturned","aubengali","aubopomofo","audeva","augujarati","augurmukhi","aulengthmarkbengali","aumatragurmukhi","auvowelsignbengali","auvowelsigndeva","auvowelsigngujarati","avagrahadeva","aybarmenian","ayin","ayinaltonehebrew","ayinhebrew","babengali","backslash","backslashmonospace","badeva","bagujarati","bagurmukhi","bahiragana","bahtthai","bakatakana","bar","barmonospace","bbopomofo","bcircle","bdotaccent","bdotbelow","beamedsixteenthnotes","because","becyrillic","beharabic","behfinalarabic","behinitialarabic","behiragana","behmedialarabic","behmeeminitialarabic","behmeemisolatedarabic","behnoonfinalarabic","bekatakana","benarmenian","bet","betasymbolgreek","betdagesh","betdageshhebrew","bethebrew","betrafehebrew","bhabengali","bhadeva","bhagujarati","bhagurmukhi","bhook","bihiragana","bikatakana","bilabialclick","bindigurmukhi","birusquare","blackcircle","blackdiamond","blackdownpointingtriangle","blackleftpointingpointer","blackleftpointingtriangle","blacklenticularbracketleft","blacklenticularbracketleftvertical","blacklenticularbracketright","blacklenticularbracketrightvertical","blacklowerlefttriangle","blacklowerrighttriangle","blackrectangle","blackrightpointingpointer","blackrightpointingtriangle","blacksmallsquare","blacksmilingface","blacksquare","blackstar","blackupperlefttriangle","blackupperrighttriangle","blackuppointingsmalltriangle","blackuppointingtriangle","blank","blinebelow","bmonospace","bobaimaithai","bohiragana","bokatakana","bparen","bqsquare","braceex","braceleft","braceleftbt","braceleftmid","braceleftmonospace","braceleftsmall","bracelefttp","braceleftvertical","braceright","bracerightbt","bracerightmid","bracerightmonospace","bracerightsmall","bracerighttp","bracerightvertical","bracketleft","bracketleftbt","bracketleftex","bracketleftmonospace","bracketlefttp","bracketright","bracketrightbt","bracketrightex","bracketrightmonospace","bracketrighttp","breve","brevebelowcmb","brevecmb","breveinvertedbelowcmb","breveinvertedcmb","breveinverteddoublecmb","bridgebelowcmb","bridgeinvertedbelowcmb","brokenbar","bstroke","bsuperior","btopbar","buhiragana","bukatakana","bullet","bulletinverse","bulletoperator","bullseye","caarmenian","cabengali","cacute","cadeva","cagujarati","cagurmukhi","calsquare","candrabindubengali","candrabinducmb","candrabindudeva","candrabindugujarati","capslock","careof","caron","caronbelowcmb","caroncmb","carriagereturn","cbopomofo","ccaron","ccedilla","ccedillaacute","ccircle","ccircumflex","ccurl","cdot","cdotaccent","cdsquare","cedilla","cedillacmb","cent","centigrade","centinferior","centmonospace","centoldstyle","centsuperior","chaarmenian","chabengali","chadeva","chagujarati","chagurmukhi","chbopomofo","cheabkhasiancyrillic","checkmark","checyrillic","chedescenderabkhasiancyrillic","chedescendercyrillic","chedieresiscyrillic","cheharmenian","chekhakassiancyrillic","cheverticalstrokecyrillic","chi","chieuchacirclekorean","chieuchaparenkorean","chieuchcirclekorean","chieuchkorean","chieuchparenkorean","chochangthai","chochanthai","chochingthai","chochoethai","chook","cieucacirclekorean","cieucaparenkorean","cieuccirclekorean","cieuckorean","cieucparenkorean","cieucuparenkorean","circle","circlecopyrt","circlemultiply","circleot","circleplus","circlepostalmark","circlewithlefthalfblack","circlewithrighthalfblack","circumflex","circumflexbelowcmb","circumflexcmb","clickalveolar","clickdental","clicklateral","clickretroflex","club","clubsuitblack","clubsuitwhite","cmcubedsquare","cmonospace","cmsquaredsquare","coarmenian","colon","colonmonetary","colonmonospace","colonsign","colonsmall","colontriangularhalfmod","colontriangularmod","comma","commaabovecmb","commaaboverightcmb","commaaccent","commaarabic","commaarmenian","commainferior","commamonospace","commareversedabovecmb","commareversedmod","commasmall","commasuperior","commaturnedabovecmb","commaturnedmod","compass","congruent","contourintegral","control","controlACK","controlBEL","controlBS","controlCAN","controlCR","controlDC1","controlDC2","controlDC3","controlDC4","controlDEL","controlDLE","controlEM","controlENQ","controlEOT","controlESC","controlETB","controlETX","controlFF","controlFS","controlGS","controlHT","controlLF","controlNAK","controlNULL","controlRS","controlSI","controlSO","controlSOT","controlSTX","controlSUB","controlSYN","controlUS","controlVT","copyrightsans","copyrightserif","cornerbracketleft","cornerbracketlefthalfwidth","cornerbracketleftvertical","cornerbracketright","cornerbracketrighthalfwidth","cornerbracketrightvertical","corporationsquare","cosquare","coverkgsquare","cparen","cruzeiro","cstretched","curlyand","curlyor","currency","cyrBreve","cyrFlex","cyrbreve","cyrflex","daarmenian","dabengali","dadarabic","dadeva","dadfinalarabic","dadinitialarabic","dadmedialarabic","dagesh","dageshhebrew","dagger","daggerdbl","dagujarati","dagurmukhi","dahiragana","dakatakana","dalarabic","dalet","daletdagesh","daletdageshhebrew","dalethebrew","dalfinalarabic","dammaarabic","dammalowarabic","dammatanaltonearabic","dammatanarabic","danda","dargahebrew","dargalefthebrew","dasiapneumatacyrilliccmb","dblGrave","dblanglebracketleft","dblanglebracketleftvertical","dblanglebracketright","dblanglebracketrightvertical","dblarchinvertedbelowcmb","dblarrowleft","dblarrowright","dbldanda","dblgrave","dblgravecmb","dblintegral","dbllowline","dbllowlinecmb","dbloverlinecmb","dblprimemod","dblverticalbar","dblverticallineabovecmb","dbopomofo","dbsquare","dcaron","dcedilla","dcircle","dcircumflexbelow","dcroat","ddabengali","ddadeva","ddagujarati","ddagurmukhi","ddalarabic","ddalfinalarabic","dddhadeva","ddhabengali","ddhadeva","ddhagujarati","ddhagurmukhi","ddotaccent","ddotbelow","decimalseparatorarabic","decimalseparatorpersian","decyrillic","degree","dehihebrew","dehiragana","deicoptic","dekatakana","deleteleft","deleteright","deltaturned","denominatorminusonenumeratorbengali","dezh","dhabengali","dhadeva","dhagujarati","dhagurmukhi","dhook","dialytikatonos","dialytikatonoscmb","diamond","diamondsuitwhite","dieresis","dieresisacute","dieresisbelowcmb","dieresiscmb","dieresisgrave","dieresistonos","dihiragana","dikatakana","dittomark","divide","divides","divisionslash","djecyrillic","dkshade","dlinebelow","dlsquare","dmacron","dmonospace","dnblock","dochadathai","dodekthai","dohiragana","dokatakana","dollar","dollarinferior","dollarmonospace","dollaroldstyle","dollarsmall","dollarsuperior","dong","dorusquare","dotaccent","dotaccentcmb","dotbelowcmb","dotbelowcomb","dotkatakana","dotlessi","dotlessj","dotlessjstrokehook","dotmath","dottedcircle","doubleyodpatah","doubleyodpatahhebrew","downtackbelowcmb","downtackmod","dparen","dsuperior","dtail","dtopbar","duhiragana","dukatakana","dz","dzaltone","dzcaron","dzcurl","dzeabkhasiancyrillic","dzecyrillic","dzhecyrillic","eacute","earth","ebengali","ebopomofo","ebreve","ecandradeva","ecandragujarati","ecandravowelsigndeva","ecandravowelsigngujarati","ecaron","ecedillabreve","echarmenian","echyiwnarmenian","ecircle","ecircumflex","ecircumflexacute","ecircumflexbelow","ecircumflexdotbelow","ecircumflexgrave","ecircumflexhookabove","ecircumflextilde","ecyrillic","edblgrave","edeva","edieresis","edot","edotaccent","edotbelow","eegurmukhi","eematragurmukhi","efcyrillic","egrave","egujarati","eharmenian","ehbopomofo","ehiragana","ehookabove","eibopomofo","eight","eightarabic","eightbengali","eightcircle","eightcircleinversesansserif","eightdeva","eighteencircle","eighteenparen","eighteenperiod","eightgujarati","eightgurmukhi","eighthackarabic","eighthangzhou","eighthnotebeamed","eightideographicparen","eightinferior","eightmonospace","eightoldstyle","eightparen","eightperiod","eightpersian","eightroman","eightsuperior","eightthai","einvertedbreve","eiotifiedcyrillic","ekatakana","ekatakanahalfwidth","ekonkargurmukhi","ekorean","elcyrillic","elevencircle","elevenparen","elevenperiod","elevenroman","ellipsis","ellipsisvertical","emacron","emacronacute","emacrongrave","emcyrillic","emdash","emdashvertical","emonospace","emphasismarkarmenian","emptyset","enbopomofo","encyrillic","endash","endashvertical","endescendercyrillic","eng","engbopomofo","enghecyrillic","enhookcyrillic","enspace","eogonek","eokorean","eopen","eopenclosed","eopenreversed","eopenreversedclosed","eopenreversedhook","eparen","epsilontonos","equal","equalmonospace","equalsmall","equalsuperior","equivalence","erbopomofo","ercyrillic","ereversed","ereversedcyrillic","escyrillic","esdescendercyrillic","esh","eshcurl","eshortdeva","eshortvowelsigndeva","eshreversedloop","eshsquatreversed","esmallhiragana","esmallkatakana","esmallkatakanahalfwidth","estimated","esuperior","eta","etarmenian","etatonos","eth","etilde","etildebelow","etnahtafoukhhebrew","etnahtafoukhlefthebrew","etnahtahebrew","etnahtalefthebrew","eturned","eukorean","euro","evowelsignbengali","evowelsigndeva","evowelsigngujarati","exclam","exclamarmenian","exclamdbl","exclamdown","exclamdownsmall","exclammonospace","exclamsmall","existential","ezh","ezhcaron","ezhcurl","ezhreversed","ezhtail","fadeva","fagurmukhi","fahrenheit","fathaarabic","fathalowarabic","fathatanarabic","fbopomofo","fcircle","fdotaccent","feharabic","feharmenian","fehfinalarabic","fehinitialarabic","fehmedialarabic","feicoptic","female","ff","f_f","ffi","ffl","fi","fifteencircle","fifteenparen","fifteenperiod","figuredash","filledbox","filledrect","finalkaf","finalkafdagesh","finalkafdageshhebrew","finalkafhebrew","finalmem","finalmemhebrew","finalnun","finalnunhebrew","finalpe","finalpehebrew","finaltsadi","finaltsadihebrew","firsttonechinese","fisheye","fitacyrillic","five","fivearabic","fivebengali","fivecircle","fivecircleinversesansserif","fivedeva","fiveeighths","fivegujarati","fivegurmukhi","fivehackarabic","fivehangzhou","fiveideographicparen","fiveinferior","fivemonospace","fiveoldstyle","fiveparen","fiveperiod","fivepersian","fiveroman","fivesuperior","fivethai","fl","florin","fmonospace","fmsquare","fofanthai","fofathai","fongmanthai","forall","four","fourarabic","fourbengali","fourcircle","fourcircleinversesansserif","fourdeva","fourgujarati","fourgurmukhi","fourhackarabic","fourhangzhou","fourideographicparen","fourinferior","fourmonospace","fournumeratorbengali","fouroldstyle","fourparen","fourperiod","fourpersian","fourroman","foursuperior","fourteencircle","fourteenparen","fourteenperiod","fourthai","fourthtonechinese","fparen","fraction","franc","gabengali","gacute","gadeva","gafarabic","gaffinalarabic","gafinitialarabic","gafmedialarabic","gagujarati","gagurmukhi","gahiragana","gakatakana","gammalatinsmall","gammasuperior","gangiacoptic","gbopomofo","gbreve","gcaron","gcedilla","gcircle","gcircumflex","gcommaaccent","gdot","gdotaccent","gecyrillic","gehiragana","gekatakana","geometricallyequal","gereshaccenthebrew","gereshhebrew","gereshmuqdamhebrew","germandbls","gershayimaccenthebrew","gershayimhebrew","getamark","ghabengali","ghadarmenian","ghadeva","ghagujarati","ghagurmukhi","ghainarabic","ghainfinalarabic","ghaininitialarabic","ghainmedialarabic","ghemiddlehookcyrillic","ghestrokecyrillic","gheupturncyrillic","ghhadeva","ghhagurmukhi","ghook","ghzsquare","gihiragana","gikatakana","gimarmenian","gimel","gimeldagesh","gimeldageshhebrew","gimelhebrew","gjecyrillic","glottalinvertedstroke","glottalstop","glottalstopinverted","glottalstopmod","glottalstopreversed","glottalstopreversedmod","glottalstopreversedsuperior","glottalstopstroke","glottalstopstrokereversed","gmacron","gmonospace","gohiragana","gokatakana","gparen","gpasquare","gradient","grave","gravebelowcmb","gravecmb","gravecomb","gravedeva","gravelowmod","gravemonospace","gravetonecmb","greater","greaterequal","greaterequalorless","greatermonospace","greaterorequivalent","greaterorless","greateroverequal","greatersmall","gscript","gstroke","guhiragana","guillemotleft","guillemotright","guilsinglleft","guilsinglright","gukatakana","guramusquare","gysquare","haabkhasiancyrillic","haaltonearabic","habengali","hadescendercyrillic","hadeva","hagujarati","hagurmukhi","haharabic","hahfinalarabic","hahinitialarabic","hahiragana","hahmedialarabic","haitusquare","hakatakana","hakatakanahalfwidth","halantgurmukhi","hamzaarabic","hamzalowarabic","hangulfiller","hardsigncyrillic","harpoonleftbarbup","harpoonrightbarbup","hasquare","hatafpatah","hatafpatah16","hatafpatah23","hatafpatah2f","hatafpatahhebrew","hatafpatahnarrowhebrew","hatafpatahquarterhebrew","hatafpatahwidehebrew","hatafqamats","hatafqamats1b","hatafqamats28","hatafqamats34","hatafqamatshebrew","hatafqamatsnarrowhebrew","hatafqamatsquarterhebrew","hatafqamatswidehebrew","hatafsegol","hatafsegol17","hatafsegol24","hatafsegol30","hatafsegolhebrew","hatafsegolnarrowhebrew","hatafsegolquarterhebrew","hatafsegolwidehebrew","hbar","hbopomofo","hbrevebelow","hcedilla","hcircle","hcircumflex","hdieresis","hdotaccent","hdotbelow","he","heart","heartsuitblack","heartsuitwhite","hedagesh","hedageshhebrew","hehaltonearabic","heharabic","hehebrew","hehfinalaltonearabic","hehfinalalttwoarabic","hehfinalarabic","hehhamzaabovefinalarabic","hehhamzaaboveisolatedarabic","hehinitialaltonearabic","hehinitialarabic","hehiragana","hehmedialaltonearabic","hehmedialarabic","heiseierasquare","hekatakana","hekatakanahalfwidth","hekutaarusquare","henghook","herutusquare","het","hethebrew","hhook","hhooksuperior","hieuhacirclekorean","hieuhaparenkorean","hieuhcirclekorean","hieuhkorean","hieuhparenkorean","hihiragana","hikatakana","hikatakanahalfwidth","hiriq","hiriq14","hiriq21","hiriq2d","hiriqhebrew","hiriqnarrowhebrew","hiriqquarterhebrew","hiriqwidehebrew","hlinebelow","hmonospace","hoarmenian","hohipthai","hohiragana","hokatakana","hokatakanahalfwidth","holam","holam19","holam26","holam32","holamhebrew","holamnarrowhebrew","holamquarterhebrew","holamwidehebrew","honokhukthai","hookabovecomb","hookcmb","hookpalatalizedbelowcmb","hookretroflexbelowcmb","hoonsquare","horicoptic","horizontalbar","horncmb","hotsprings","house","hparen","hsuperior","hturned","huhiragana","huiitosquare","hukatakana","hukatakanahalfwidth","hungarumlaut","hungarumlautcmb","hv","hyphen","hypheninferior","hyphenmonospace","hyphensmall","hyphensuperior","hyphentwo","iacute","iacyrillic","ibengali","ibopomofo","ibreve","icaron","icircle","icircumflex","icyrillic","idblgrave","ideographearthcircle","ideographfirecircle","ideographicallianceparen","ideographiccallparen","ideographiccentrecircle","ideographicclose","ideographiccomma","ideographiccommaleft","ideographiccongratulationparen","ideographiccorrectcircle","ideographicearthparen","ideographicenterpriseparen","ideographicexcellentcircle","ideographicfestivalparen","ideographicfinancialcircle","ideographicfinancialparen","ideographicfireparen","ideographichaveparen","ideographichighcircle","ideographiciterationmark","ideographiclaborcircle","ideographiclaborparen","ideographicleftcircle","ideographiclowcircle","ideographicmedicinecircle","ideographicmetalparen","ideographicmoonparen","ideographicnameparen","ideographicperiod","ideographicprintcircle","ideographicreachparen","ideographicrepresentparen","ideographicresourceparen","ideographicrightcircle","ideographicsecretcircle","ideographicselfparen","ideographicsocietyparen","ideographicspace","ideographicspecialparen","ideographicstockparen","ideographicstudyparen","ideographicsunparen","ideographicsuperviseparen","ideographicwaterparen","ideographicwoodparen","ideographiczero","ideographmetalcircle","ideographmooncircle","ideographnamecircle","ideographsuncircle","ideographwatercircle","ideographwoodcircle","ideva","idieresis","idieresisacute","idieresiscyrillic","idotbelow","iebrevecyrillic","iecyrillic","ieungacirclekorean","ieungaparenkorean","ieungcirclekorean","ieungkorean","ieungparenkorean","igrave","igujarati","igurmukhi","ihiragana","ihookabove","iibengali","iicyrillic","iideva","iigujarati","iigurmukhi","iimatragurmukhi","iinvertedbreve","iishortcyrillic","iivowelsignbengali","iivowelsigndeva","iivowelsigngujarati","ij","ikatakana","ikatakanahalfwidth","ikorean","ilde","iluyhebrew","imacron","imacroncyrillic","imageorapproximatelyequal","imatragurmukhi","imonospace","increment","infinity","iniarmenian","integral","integralbottom","integralbt","integralex","integraltop","integraltp","intersection","intisquare","invbullet","invcircle","invsmileface","iocyrillic","iogonek","iota","iotadieresis","iotadieresistonos","iotalatin","iotatonos","iparen","irigurmukhi","ismallhiragana","ismallkatakana","ismallkatakanahalfwidth","issharbengali","istroke","isuperior","iterationhiragana","iterationkatakana","itilde","itildebelow","iubopomofo","iucyrillic","ivowelsignbengali","ivowelsigndeva","ivowelsigngujarati","izhitsacyrillic","izhitsadblgravecyrillic","jaarmenian","jabengali","jadeva","jagujarati","jagurmukhi","jbopomofo","jcaron","jcircle","jcircumflex","jcrossedtail","jdotlessstroke","jecyrillic","jeemarabic","jeemfinalarabic","jeeminitialarabic","jeemmedialarabic","jeharabic","jehfinalarabic","jhabengali","jhadeva","jhagujarati","jhagurmukhi","jheharmenian","jis","jmonospace","jparen","jsuperior","kabashkircyrillic","kabengali","kacute","kacyrillic","kadescendercyrillic","kadeva","kaf","kafarabic","kafdagesh","kafdageshhebrew","kaffinalarabic","kafhebrew","kafinitialarabic","kafmedialarabic","kafrafehebrew","kagujarati","kagurmukhi","kahiragana","kahookcyrillic","kakatakana","kakatakanahalfwidth","kappa","kappasymbolgreek","kapyeounmieumkorean","kapyeounphieuphkorean","kapyeounpieupkorean","kapyeounssangpieupkorean","karoriisquare","kashidaautoarabic","kashidaautonosidebearingarabic","kasmallkatakana","kasquare","kasraarabic","kasratanarabic","kastrokecyrillic","katahiraprolongmarkhalfwidth","kaverticalstrokecyrillic","kbopomofo","kcalsquare","kcaron","kcedilla","kcircle","kcommaaccent","kdotbelow","keharmenian","kehiragana","kekatakana","kekatakanahalfwidth","kenarmenian","kesmallkatakana","kgreenlandic","khabengali","khacyrillic","khadeva","khagujarati","khagurmukhi","khaharabic","khahfinalarabic","khahinitialarabic","khahmedialarabic","kheicoptic","khhadeva","khhagurmukhi","khieukhacirclekorean","khieukhaparenkorean","khieukhcirclekorean","khieukhkorean","khieukhparenkorean","khokhaithai","khokhonthai","khokhuatthai","khokhwaithai","khomutthai","khook","khorakhangthai","khzsquare","kihiragana","kikatakana","kikatakanahalfwidth","kiroguramusquare","kiromeetorusquare","kirosquare","kiyeokacirclekorean","kiyeokaparenkorean","kiyeokcirclekorean","kiyeokkorean","kiyeokparenkorean","kiyeoksioskorean","kjecyrillic","klinebelow","klsquare","kmcubedsquare","kmonospace","kmsquaredsquare","kohiragana","kohmsquare","kokaithai","kokatakana","kokatakanahalfwidth","kooposquare","koppacyrillic","koreanstandardsymbol","koroniscmb","kparen","kpasquare","ksicyrillic","ktsquare","kturned","kuhiragana","kukatakana","kukatakanahalfwidth","kvsquare","kwsquare","labengali","lacute","ladeva","lagujarati","lagurmukhi","lakkhangyaothai","lamaleffinalarabic","lamalefhamzaabovefinalarabic","lamalefhamzaaboveisolatedarabic","lamalefhamzabelowfinalarabic","lamalefhamzabelowisolatedarabic","lamalefisolatedarabic","lamalefmaddaabovefinalarabic","lamalefmaddaaboveisolatedarabic","lamarabic","lambda","lambdastroke","lamed","lameddagesh","lameddageshhebrew","lamedhebrew","lamfinalarabic","lamhahinitialarabic","laminitialarabic","lamjeeminitialarabic","lamkhahinitialarabic","lamlamhehisolatedarabic","lammedialarabic","lammeemhahinitialarabic","lammeeminitialarabic","largecircle","lbar","lbelt","lbopomofo","lcaron","lcedilla","lcircle","lcircumflexbelow","lcommaaccent","ldot","ldotaccent","ldotbelow","ldotbelowmacron","leftangleabovecmb","lefttackbelowcmb","less","lessequal","lessequalorgreater","lessmonospace","lessorequivalent","lessorgreater","lessoverequal","lesssmall","lezh","lfblock","lhookretroflex","lira","liwnarmenian","lj","ljecyrillic","lladeva","llagujarati","llinebelow","llladeva","llvocalicbengali","llvocalicdeva","llvocalicvowelsignbengali","llvocalicvowelsigndeva","lmiddletilde","lmonospace","lmsquare","lochulathai","logicaland","logicalnot","logicalnotreversed","logicalor","lolingthai","longs","lowlinecenterline","lowlinecmb","lowlinedashed","lozenge","lparen","lslash","lsquare","lsuperior","ltshade","luthai","lvocalicbengali","lvocalicdeva","lvocalicvowelsignbengali","lvocalicvowelsigndeva","lxsquare","mabengali","macron","macronbelowcmb","macroncmb","macronlowmod","macronmonospace","macute","madeva","magujarati","magurmukhi","mahapakhhebrew","mahapakhlefthebrew","mahiragana","maichattawalowleftthai","maichattawalowrightthai","maichattawathai","maichattawaupperleftthai","maieklowleftthai","maieklowrightthai","maiekthai","maiekupperleftthai","maihanakatleftthai","maihanakatthai","maitaikhuleftthai","maitaikhuthai","maitholowleftthai","maitholowrightthai","maithothai","maithoupperleftthai","maitrilowleftthai","maitrilowrightthai","maitrithai","maitriupperleftthai","maiyamokthai","makatakana","makatakanahalfwidth","male","mansyonsquare","maqafhebrew","mars","masoracirclehebrew","masquare","mbopomofo","mbsquare","mcircle","mcubedsquare","mdotaccent","mdotbelow","meemarabic","meemfinalarabic","meeminitialarabic","meemmedialarabic","meemmeeminitialarabic","meemmeemisolatedarabic","meetorusquare","mehiragana","meizierasquare","mekatakana","mekatakanahalfwidth","mem","memdagesh","memdageshhebrew","memhebrew","menarmenian","merkhahebrew","merkhakefulahebrew","merkhakefulalefthebrew","merkhalefthebrew","mhook","mhzsquare","middledotkatakanahalfwidth","middot","mieumacirclekorean","mieumaparenkorean","mieumcirclekorean","mieumkorean","mieumpansioskorean","mieumparenkorean","mieumpieupkorean","mieumsioskorean","mihiragana","mikatakana","mikatakanahalfwidth","minus","minusbelowcmb","minuscircle","minusmod","minusplus","minute","miribaarusquare","mirisquare","mlonglegturned","mlsquare","mmcubedsquare","mmonospace","mmsquaredsquare","mohiragana","mohmsquare","mokatakana","mokatakanahalfwidth","molsquare","momathai","moverssquare","moverssquaredsquare","mparen","mpasquare","mssquare","msuperior","mturned","mu1","muasquare","muchgreater","muchless","mufsquare","mugreek","mugsquare","muhiragana","mukatakana","mukatakanahalfwidth","mulsquare","multiply","mumsquare","munahhebrew","munahlefthebrew","musicalnote","musicalnotedbl","musicflatsign","musicsharpsign","mussquare","muvsquare","muwsquare","mvmegasquare","mvsquare","mwmegasquare","mwsquare","nabengali","nabla","nacute","nadeva","nagujarati","nagurmukhi","nahiragana","nakatakana","nakatakanahalfwidth","napostrophe","nasquare","nbopomofo","nbspace","ncaron","ncedilla","ncircle","ncircumflexbelow","ncommaaccent","ndotaccent","ndotbelow","nehiragana","nekatakana","nekatakanahalfwidth","newsheqelsign","nfsquare","ngabengali","ngadeva","ngagujarati","ngagurmukhi","ngonguthai","nhiragana","nhookleft","nhookretroflex","nieunacirclekorean","nieunaparenkorean","nieuncieuckorean","nieuncirclekorean","nieunhieuhkorean","nieunkorean","nieunpansioskorean","nieunparenkorean","nieunsioskorean","nieuntikeutkorean","nihiragana","nikatakana","nikatakanahalfwidth","nikhahitleftthai","nikhahitthai","nine","ninearabic","ninebengali","ninecircle","ninecircleinversesansserif","ninedeva","ninegujarati","ninegurmukhi","ninehackarabic","ninehangzhou","nineideographicparen","nineinferior","ninemonospace","nineoldstyle","nineparen","nineperiod","ninepersian","nineroman","ninesuperior","nineteencircle","nineteenparen","nineteenperiod","ninethai","nj","njecyrillic","nkatakana","nkatakanahalfwidth","nlegrightlong","nlinebelow","nmonospace","nmsquare","nnabengali","nnadeva","nnagujarati","nnagurmukhi","nnnadeva","nohiragana","nokatakana","nokatakanahalfwidth","nonbreakingspace","nonenthai","nonuthai","noonarabic","noonfinalarabic","noonghunnaarabic","noonghunnafinalarabic","nooninitialarabic","noonjeeminitialarabic","noonjeemisolatedarabic","noonmedialarabic","noonmeeminitialarabic","noonmeemisolatedarabic","noonnoonfinalarabic","notcontains","notelement","notelementof","notequal","notgreater","notgreaternorequal","notgreaternorless","notidentical","notless","notlessnorequal","notparallel","notprecedes","notsubset","notsucceeds","notsuperset","nowarmenian","nparen","nssquare","nsuperior","ntilde","nu","nuhiragana","nukatakana","nukatakanahalfwidth","nuktabengali","nuktadeva","nuktagujarati","nuktagurmukhi","numbersign","numbersignmonospace","numbersignsmall","numeralsigngreek","numeralsignlowergreek","numero","nun","nundagesh","nundageshhebrew","nunhebrew","nvsquare","nwsquare","nyabengali","nyadeva","nyagujarati","nyagurmukhi","o","oacute","oangthai","obarred","obarredcyrillic","obarreddieresiscyrillic","obengali","obopomofo","obreve","ocandradeva","ocandragujarati","ocandravowelsigndeva","ocandravowelsigngujarati","ocaron","ocircle","ocircumflex","ocircumflexacute","ocircumflexdotbelow","ocircumflexgrave","ocircumflexhookabove","ocircumflextilde","ocyrillic","odblacute","odblgrave","odeva","odieresis","odieresiscyrillic","odotbelow","oe","oekorean","ogonek","ogonekcmb","ograve","ogujarati","oharmenian","ohiragana","ohookabove","ohorn","ohornacute","ohorndotbelow","ohorngrave","ohornhookabove","ohorntilde","ohungarumlaut","oi","oinvertedbreve","okatakana","okatakanahalfwidth","okorean","olehebrew","omacron","omacronacute","omacrongrave","omdeva","omega","omega1","omegacyrillic","omegalatinclosed","omegaroundcyrillic","omegatitlocyrillic","omegatonos","omgujarati","omicron","omicrontonos","omonospace","one","onearabic","onebengali","onecircle","onecircleinversesansserif","onedeva","onedotenleader","oneeighth","onefitted","onegujarati","onegurmukhi","onehackarabic","onehalf","onehangzhou","oneideographicparen","oneinferior","onemonospace","onenumeratorbengali","oneoldstyle","oneparen","oneperiod","onepersian","onequarter","oneroman","onesuperior","onethai","onethird","oogonek","oogonekmacron","oogurmukhi","oomatragurmukhi","oopen","oparen","openbullet","ordfeminine","ordmasculine","orthogonal","oshortdeva","oshortvowelsigndeva","oslash","oslashacute","osmallhiragana","osmallkatakana","osmallkatakanahalfwidth","ostrokeacute","osuperior","otcyrillic","otilde","otildeacute","otildedieresis","oubopomofo","overline","overlinecenterline","overlinecmb","overlinedashed","overlinedblwavy","overlinewavy","overscore","ovowelsignbengali","ovowelsigndeva","ovowelsigngujarati","paampssquare","paasentosquare","pabengali","pacute","padeva","pagedown","pageup","pagujarati","pagurmukhi","pahiragana","paiyannoithai","pakatakana","palatalizationcyrilliccmb","palochkacyrillic","pansioskorean","paragraph","parallel","parenleft","parenleftaltonearabic","parenleftbt","parenleftex","parenleftinferior","parenleftmonospace","parenleftsmall","parenleftsuperior","parenlefttp","parenleftvertical","parenright","parenrightaltonearabic","parenrightbt","parenrightex","parenrightinferior","parenrightmonospace","parenrightsmall","parenrightsuperior","parenrighttp","parenrightvertical","partialdiff","paseqhebrew","pashtahebrew","pasquare","patah","patah11","patah1d","patah2a","patahhebrew","patahnarrowhebrew","patahquarterhebrew","patahwidehebrew","pazerhebrew","pbopomofo","pcircle","pdotaccent","pe","pecyrillic","pedagesh","pedageshhebrew","peezisquare","pefinaldageshhebrew","peharabic","peharmenian","pehebrew","pehfinalarabic","pehinitialarabic","pehiragana","pehmedialarabic","pekatakana","pemiddlehookcyrillic","perafehebrew","percent","percentarabic","percentmonospace","percentsmall","period","periodarmenian","periodcentered","periodhalfwidth","periodinferior","periodmonospace","periodsmall","periodsuperior","perispomenigreekcmb","perpendicular","perthousand","peseta","pfsquare","phabengali","phadeva","phagujarati","phagurmukhi","phi","phi1","phieuphacirclekorean","phieuphaparenkorean","phieuphcirclekorean","phieuphkorean","phieuphparenkorean","philatin","phinthuthai","phisymbolgreek","phook","phophanthai","phophungthai","phosamphaothai","pieupacirclekorean","pieupaparenkorean","pieupcieuckorean","pieupcirclekorean","pieupkiyeokkorean","pieupkorean","pieupparenkorean","pieupsioskiyeokkorean","pieupsioskorean","pieupsiostikeutkorean","pieupthieuthkorean","pieuptikeutkorean","pihiragana","pikatakana","pisymbolgreek","piwrarmenian","plusbelowcmb","pluscircle","plusminus","plusmod","plusmonospace","plussmall","plussuperior","pmonospace","pmsquare","pohiragana","pointingindexdownwhite","pointingindexleftwhite","pointingindexrightwhite","pointingindexupwhite","pokatakana","poplathai","postalmark","postalmarkface","pparen","precedes","prescription","primemod","primereversed","product","projective","prolongedkana","propellor","propersubset","propersuperset","proportion","proportional","psi","psicyrillic","psilipneumatacyrilliccmb","pssquare","puhiragana","pukatakana","pvsquare","pwsquare","qadeva","qadmahebrew","qafarabic","qaffinalarabic","qafinitialarabic","qafmedialarabic","qamats","qamats10","qamats1a","qamats1c","qamats27","qamats29","qamats33","qamatsde","qamatshebrew","qamatsnarrowhebrew","qamatsqatanhebrew","qamatsqatannarrowhebrew","qamatsqatanquarterhebrew","qamatsqatanwidehebrew","qamatsquarterhebrew","qamatswidehebrew","qarneyparahebrew","qbopomofo","qcircle","qhook","qmonospace","qof","qofdagesh","qofdageshhebrew","qofhebrew","qparen","quarternote","qubuts","qubuts18","qubuts25","qubuts31","qubutshebrew","qubutsnarrowhebrew","qubutsquarterhebrew","qubutswidehebrew","question","questionarabic","questionarmenian","questiondown","questiondownsmall","questiongreek","questionmonospace","questionsmall","quotedbl","quotedblbase","quotedblleft","quotedblmonospace","quotedblprime","quotedblprimereversed","quotedblright","quoteleft","quoteleftreversed","quotereversed","quoteright","quoterightn","quotesinglbase","quotesingle","quotesinglemonospace","raarmenian","rabengali","racute","radeva","radical","radicalex","radoverssquare","radoverssquaredsquare","radsquare","rafe","rafehebrew","ragujarati","ragurmukhi","rahiragana","rakatakana","rakatakanahalfwidth","ralowerdiagonalbengali","ramiddlediagonalbengali","ramshorn","ratio","rbopomofo","rcaron","rcedilla","rcircle","rcommaaccent","rdblgrave","rdotaccent","rdotbelow","rdotbelowmacron","referencemark","reflexsubset","reflexsuperset","registered","registersans","registerserif","reharabic","reharmenian","rehfinalarabic","rehiragana","rekatakana","rekatakanahalfwidth","resh","reshdageshhebrew","reshhebrew","reversedtilde","reviahebrew","reviamugrashhebrew","revlogicalnot","rfishhook","rfishhookreversed","rhabengali","rhadeva","rho","rhook","rhookturned","rhookturnedsuperior","rhosymbolgreek","rhotichookmod","rieulacirclekorean","rieulaparenkorean","rieulcirclekorean","rieulhieuhkorean","rieulkiyeokkorean","rieulkiyeoksioskorean","rieulkorean","rieulmieumkorean","rieulpansioskorean","rieulparenkorean","rieulphieuphkorean","rieulpieupkorean","rieulpieupsioskorean","rieulsioskorean","rieulthieuthkorean","rieultikeutkorean","rieulyeorinhieuhkorean","rightangle","righttackbelowcmb","righttriangle","rihiragana","rikatakana","rikatakanahalfwidth","ring","ringbelowcmb","ringcmb","ringhalfleft","ringhalfleftarmenian","ringhalfleftbelowcmb","ringhalfleftcentered","ringhalfright","ringhalfrightbelowcmb","ringhalfrightcentered","rinvertedbreve","rittorusquare","rlinebelow","rlongleg","rlonglegturned","rmonospace","rohiragana","rokatakana","rokatakanahalfwidth","roruathai","rparen","rrabengali","rradeva","rragurmukhi","rreharabic","rrehfinalarabic","rrvocalicbengali","rrvocalicdeva","rrvocalicgujarati","rrvocalicvowelsignbengali","rrvocalicvowelsigndeva","rrvocalicvowelsigngujarati","rsuperior","rtblock","rturned","rturnedsuperior","ruhiragana","rukatakana","rukatakanahalfwidth","rupeemarkbengali","rupeesignbengali","rupiah","ruthai","rvocalicbengali","rvocalicdeva","rvocalicgujarati","rvocalicvowelsignbengali","rvocalicvowelsigndeva","rvocalicvowelsigngujarati","sabengali","sacute","sacutedotaccent","sadarabic","sadeva","sadfinalarabic","sadinitialarabic","sadmedialarabic","sagujarati","sagurmukhi","sahiragana","sakatakana","sakatakanahalfwidth","sallallahoualayhewasallamarabic","samekh","samekhdagesh","samekhdageshhebrew","samekhhebrew","saraaathai","saraaethai","saraaimaimalaithai","saraaimaimuanthai","saraamthai","saraathai","saraethai","saraiileftthai","saraiithai","saraileftthai","saraithai","saraothai","saraueeleftthai","saraueethai","saraueleftthai","sarauethai","sarauthai","sarauuthai","sbopomofo","scaron","scarondotaccent","scedilla","schwa","schwacyrillic","schwadieresiscyrillic","schwahook","scircle","scircumflex","scommaaccent","sdotaccent","sdotbelow","sdotbelowdotaccent","seagullbelowcmb","secondtonechinese","section","seenarabic","seenfinalarabic","seeninitialarabic","seenmedialarabic","segol","segol13","segol1f","segol2c","segolhebrew","segolnarrowhebrew","segolquarterhebrew","segoltahebrew","segolwidehebrew","seharmenian","sehiragana","sekatakana","sekatakanahalfwidth","semicolon","semicolonarabic","semicolonmonospace","semicolonsmall","semivoicedmarkkana","semivoicedmarkkanahalfwidth","sentisquare","sentosquare","seven","sevenarabic","sevenbengali","sevencircle","sevencircleinversesansserif","sevendeva","seveneighths","sevengujarati","sevengurmukhi","sevenhackarabic","sevenhangzhou","sevenideographicparen","seveninferior","sevenmonospace","sevenoldstyle","sevenparen","sevenperiod","sevenpersian","sevenroman","sevensuperior","seventeencircle","seventeenparen","seventeenperiod","seventhai","sfthyphen","shaarmenian","shabengali","shacyrillic","shaddaarabic","shaddadammaarabic","shaddadammatanarabic","shaddafathaarabic","shaddakasraarabic","shaddakasratanarabic","shade","shadedark","shadelight","shademedium","shadeva","shagujarati","shagurmukhi","shalshelethebrew","shbopomofo","shchacyrillic","sheenarabic","sheenfinalarabic","sheeninitialarabic","sheenmedialarabic","sheicoptic","sheqel","sheqelhebrew","sheva","sheva115","sheva15","sheva22","sheva2e","shevahebrew","shevanarrowhebrew","shevaquarterhebrew","shevawidehebrew","shhacyrillic","shimacoptic","shin","shindagesh","shindageshhebrew","shindageshshindot","shindageshshindothebrew","shindageshsindot","shindageshsindothebrew","shindothebrew","shinhebrew","shinshindot","shinshindothebrew","shinsindot","shinsindothebrew","shook","sigma1","sigmafinal","sigmalunatesymbolgreek","sihiragana","sikatakana","sikatakanahalfwidth","siluqhebrew","siluqlefthebrew","similar","sindothebrew","siosacirclekorean","siosaparenkorean","sioscieuckorean","sioscirclekorean","sioskiyeokkorean","sioskorean","siosnieunkorean","siosparenkorean","siospieupkorean","siostikeutkorean","six","sixarabic","sixbengali","sixcircle","sixcircleinversesansserif","sixdeva","sixgujarati","sixgurmukhi","sixhackarabic","sixhangzhou","sixideographicparen","sixinferior","sixmonospace","sixoldstyle","sixparen","sixperiod","sixpersian","sixroman","sixsuperior","sixteencircle","sixteencurrencydenominatorbengali","sixteenparen","sixteenperiod","sixthai","slash","slashmonospace","slong","slongdotaccent","smileface","smonospace","sofpasuqhebrew","softhyphen","softsigncyrillic","sohiragana","sokatakana","sokatakanahalfwidth","soliduslongoverlaycmb","solidusshortoverlaycmb","sorusithai","sosalathai","sosothai","sosuathai","spacehackarabic","spade","spadesuitblack","spadesuitwhite","sparen","squarebelowcmb","squarecc","squarecm","squarediagonalcrosshatchfill","squarehorizontalfill","squarekg","squarekm","squarekmcapital","squareln","squarelog","squaremg","squaremil","squaremm","squaremsquared","squareorthogonalcrosshatchfill","squareupperlefttolowerrightfill","squareupperrighttolowerleftfill","squareverticalfill","squarewhitewithsmallblack","srsquare","ssabengali","ssadeva","ssagujarati","ssangcieuckorean","ssanghieuhkorean","ssangieungkorean","ssangkiyeokkorean","ssangnieunkorean","ssangpieupkorean","ssangsioskorean","ssangtikeutkorean","ssuperior","sterling","sterlingmonospace","strokelongoverlaycmb","strokeshortoverlaycmb","subset","subsetnotequal","subsetorequal","succeeds","suchthat","suhiragana","sukatakana","sukatakanahalfwidth","sukunarabic","summation","sun","superset","supersetnotequal","supersetorequal","svsquare","syouwaerasquare","tabengali","tackdown","tackleft","tadeva","tagujarati","tagurmukhi","taharabic","tahfinalarabic","tahinitialarabic","tahiragana","tahmedialarabic","taisyouerasquare","takatakana","takatakanahalfwidth","tatweelarabic","tau","tav","tavdages","tavdagesh","tavdageshhebrew","tavhebrew","tbar","tbopomofo","tcaron","tccurl","tcedilla","tcheharabic","tchehfinalarabic","tchehinitialarabic","tchehmedialarabic","tcircle","tcircumflexbelow","tcommaaccent","tdieresis","tdotaccent","tdotbelow","tecyrillic","tedescendercyrillic","teharabic","tehfinalarabic","tehhahinitialarabic","tehhahisolatedarabic","tehinitialarabic","tehiragana","tehjeeminitialarabic","tehjeemisolatedarabic","tehmarbutaarabic","tehmarbutafinalarabic","tehmedialarabic","tehmeeminitialarabic","tehmeemisolatedarabic","tehnoonfinalarabic","tekatakana","tekatakanahalfwidth","telephone","telephoneblack","telishagedolahebrew","telishaqetanahebrew","tencircle","tenideographicparen","tenparen","tenperiod","tenroman","tesh","tet","tetdagesh","tetdageshhebrew","tethebrew","tetsecyrillic","tevirhebrew","tevirlefthebrew","thabengali","thadeva","thagujarati","thagurmukhi","thalarabic","thalfinalarabic","thanthakhatlowleftthai","thanthakhatlowrightthai","thanthakhatthai","thanthakhatupperleftthai","theharabic","thehfinalarabic","thehinitialarabic","thehmedialarabic","thereexists","therefore","theta","theta1","thetasymbolgreek","thieuthacirclekorean","thieuthaparenkorean","thieuthcirclekorean","thieuthkorean","thieuthparenkorean","thirteencircle","thirteenparen","thirteenperiod","thonangmonthothai","thook","thophuthaothai","thorn","thothahanthai","thothanthai","thothongthai","thothungthai","thousandcyrillic","thousandsseparatorarabic","thousandsseparatorpersian","three","threearabic","threebengali","threecircle","threecircleinversesansserif","threedeva","threeeighths","threegujarati","threegurmukhi","threehackarabic","threehangzhou","threeideographicparen","threeinferior","threemonospace","threenumeratorbengali","threeoldstyle","threeparen","threeperiod","threepersian","threequarters","threequartersemdash","threeroman","threesuperior","threethai","thzsquare","tihiragana","tikatakana","tikatakanahalfwidth","tikeutacirclekorean","tikeutaparenkorean","tikeutcirclekorean","tikeutkorean","tikeutparenkorean","tilde","tildebelowcmb","tildecmb","tildecomb","tildedoublecmb","tildeoperator","tildeoverlaycmb","tildeverticalcmb","timescircle","tipehahebrew","tipehalefthebrew","tippigurmukhi","titlocyrilliccmb","tiwnarmenian","tlinebelow","tmonospace","toarmenian","tohiragana","tokatakana","tokatakanahalfwidth","tonebarextrahighmod","tonebarextralowmod","tonebarhighmod","tonebarlowmod","tonebarmidmod","tonefive","tonesix","tonetwo","tonos","tonsquare","topatakthai","tortoiseshellbracketleft","tortoiseshellbracketleftsmall","tortoiseshellbracketleftvertical","tortoiseshellbracketright","tortoiseshellbracketrightsmall","tortoiseshellbracketrightvertical","totaothai","tpalatalhook","tparen","trademark","trademarksans","trademarkserif","tretroflexhook","triagdn","triaglf","triagrt","triagup","ts","tsadi","tsadidagesh","tsadidageshhebrew","tsadihebrew","tsecyrillic","tsere","tsere12","tsere1e","tsere2b","tserehebrew","tserenarrowhebrew","tserequarterhebrew","tserewidehebrew","tshecyrillic","tsuperior","ttabengali","ttadeva","ttagujarati","ttagurmukhi","tteharabic","ttehfinalarabic","ttehinitialarabic","ttehmedialarabic","tthabengali","tthadeva","tthagujarati","tthagurmukhi","tturned","tuhiragana","tukatakana","tukatakanahalfwidth","tusmallhiragana","tusmallkatakana","tusmallkatakanahalfwidth","twelvecircle","twelveparen","twelveperiod","twelveroman","twentycircle","twentyhangzhou","twentyparen","twentyperiod","two","twoarabic","twobengali","twocircle","twocircleinversesansserif","twodeva","twodotenleader","twodotleader","twodotleadervertical","twogujarati","twogurmukhi","twohackarabic","twohangzhou","twoideographicparen","twoinferior","twomonospace","twonumeratorbengali","twooldstyle","twoparen","twoperiod","twopersian","tworoman","twostroke","twosuperior","twothai","twothirds","uacute","ubar","ubengali","ubopomofo","ubreve","ucaron","ucircle","ucircumflex","ucircumflexbelow","ucyrillic","udattadeva","udblacute","udblgrave","udeva","udieresis","udieresisacute","udieresisbelow","udieresiscaron","udieresiscyrillic","udieresisgrave","udieresismacron","udotbelow","ugrave","ugujarati","ugurmukhi","uhiragana","uhookabove","uhorn","uhornacute","uhorndotbelow","uhorngrave","uhornhookabove","uhorntilde","uhungarumlaut","uhungarumlautcyrillic","uinvertedbreve","ukatakana","ukatakanahalfwidth","ukcyrillic","ukorean","umacron","umacroncyrillic","umacrondieresis","umatragurmukhi","umonospace","underscore","underscoredbl","underscoremonospace","underscorevertical","underscorewavy","union","universal","uogonek","uparen","upblock","upperdothebrew","upsilon","upsilondieresis","upsilondieresistonos","upsilonlatin","upsilontonos","uptackbelowcmb","uptackmod","uragurmukhi","uring","ushortcyrillic","usmallhiragana","usmallkatakana","usmallkatakanahalfwidth","ustraightcyrillic","ustraightstrokecyrillic","utilde","utildeacute","utildebelow","uubengali","uudeva","uugujarati","uugurmukhi","uumatragurmukhi","uuvowelsignbengali","uuvowelsigndeva","uuvowelsigngujarati","uvowelsignbengali","uvowelsigndeva","uvowelsigngujarati","vadeva","vagujarati","vagurmukhi","vakatakana","vav","vavdagesh","vavdagesh65","vavdageshhebrew","vavhebrew","vavholam","vavholamhebrew","vavvavhebrew","vavyodhebrew","vcircle","vdotbelow","vecyrillic","veharabic","vehfinalarabic","vehinitialarabic","vehmedialarabic","vekatakana","venus","verticalbar","verticallineabovecmb","verticallinebelowcmb","verticallinelowmod","verticallinemod","vewarmenian","vhook","vikatakana","viramabengali","viramadeva","viramagujarati","visargabengali","visargadeva","visargagujarati","vmonospace","voarmenian","voicediterationhiragana","voicediterationkatakana","voicedmarkkana","voicedmarkkanahalfwidth","vokatakana","vparen","vtilde","vturned","vuhiragana","vukatakana","wacute","waekorean","wahiragana","wakatakana","wakatakanahalfwidth","wakorean","wasmallhiragana","wasmallkatakana","wattosquare","wavedash","wavyunderscorevertical","wawarabic","wawfinalarabic","wawhamzaabovearabic","wawhamzaabovefinalarabic","wbsquare","wcircle","wcircumflex","wdieresis","wdotaccent","wdotbelow","wehiragana","weierstrass","wekatakana","wekorean","weokorean","wgrave","whitebullet","whitecircle","whitecircleinverse","whitecornerbracketleft","whitecornerbracketleftvertical","whitecornerbracketright","whitecornerbracketrightvertical","whitediamond","whitediamondcontainingblacksmalldiamond","whitedownpointingsmalltriangle","whitedownpointingtriangle","whiteleftpointingsmalltriangle","whiteleftpointingtriangle","whitelenticularbracketleft","whitelenticularbracketright","whiterightpointingsmalltriangle","whiterightpointingtriangle","whitesmallsquare","whitesmilingface","whitesquare","whitestar","whitetelephone","whitetortoiseshellbracketleft","whitetortoiseshellbracketright","whiteuppointingsmalltriangle","whiteuppointingtriangle","wihiragana","wikatakana","wikorean","wmonospace","wohiragana","wokatakana","wokatakanahalfwidth","won","wonmonospace","wowaenthai","wparen","wring","wsuperior","wturned","wynn","xabovecmb","xbopomofo","xcircle","xdieresis","xdotaccent","xeharmenian","xi","xmonospace","xparen","xsuperior","yaadosquare","yabengali","yacute","yadeva","yaekorean","yagujarati","yagurmukhi","yahiragana","yakatakana","yakatakanahalfwidth","yakorean","yamakkanthai","yasmallhiragana","yasmallkatakana","yasmallkatakanahalfwidth","yatcyrillic","ycircle","ycircumflex","ydieresis","ydotaccent","ydotbelow","yeharabic","yehbarreearabic","yehbarreefinalarabic","yehfinalarabic","yehhamzaabovearabic","yehhamzaabovefinalarabic","yehhamzaaboveinitialarabic","yehhamzaabovemedialarabic","yehinitialarabic","yehmedialarabic","yehmeeminitialarabic","yehmeemisolatedarabic","yehnoonfinalarabic","yehthreedotsbelowarabic","yekorean","yen","yenmonospace","yeokorean","yeorinhieuhkorean","yerahbenyomohebrew","yerahbenyomolefthebrew","yericyrillic","yerudieresiscyrillic","yesieungkorean","yesieungpansioskorean","yesieungsioskorean","yetivhebrew","ygrave","yhook","yhookabove","yiarmenian","yicyrillic","yikorean","yinyang","yiwnarmenian","ymonospace","yod","yoddagesh","yoddageshhebrew","yodhebrew","yodyodhebrew","yodyodpatahhebrew","yohiragana","yoikorean","yokatakana","yokatakanahalfwidth","yokorean","yosmallhiragana","yosmallkatakana","yosmallkatakanahalfwidth","yotgreek","yoyaekorean","yoyakorean","yoyakthai","yoyingthai","yparen","ypogegrammeni","ypogegrammenigreekcmb","yr","yring","ysuperior","ytilde","yturned","yuhiragana","yuikorean","yukatakana","yukatakanahalfwidth","yukorean","yusbigcyrillic","yusbigiotifiedcyrillic","yuslittlecyrillic","yuslittleiotifiedcyrillic","yusmallhiragana","yusmallkatakana","yusmallkatakanahalfwidth","yuyekorean","yuyeokorean","yyabengali","yyadeva","zaarmenian","zacute","zadeva","zagurmukhi","zaharabic","zahfinalarabic","zahinitialarabic","zahiragana","zahmedialarabic","zainarabic","zainfinalarabic","zakatakana","zaqefgadolhebrew","zaqefqatanhebrew","zarqahebrew","zayin","zayindagesh","zayindageshhebrew","zayinhebrew","zbopomofo","zcaron","zcircle","zcircumflex","zcurl","zdot","zdotaccent","zdotbelow","zecyrillic","zedescendercyrillic","zedieresiscyrillic","zehiragana","zekatakana","zero","zeroarabic","zerobengali","zerodeva","zerogujarati","zerogurmukhi","zerohackarabic","zeroinferior","zeromonospace","zerooldstyle","zeropersian","zerosuperior","zerothai","zerowidthjoiner","zerowidthnonjoiner","zerowidthspace","zeta","zhbopomofo","zhearmenian","zhebrevecyrillic","zhecyrillic","zhedescendercyrillic","zhedieresiscyrillic","zihiragana","zikatakana","zinorhebrew","zlinebelow","zmonospace","zohiragana","zokatakana","zparen","zretroflexhook","zstroke","zuhiragana","zukatakana","angbracketleftbig","angbracketleftBig","angbracketleftbigg","angbracketleftBigg","angbracketrightBig","angbracketrightbig","angbracketrightBigg","angbracketrightbigg","arrowhookleft","arrowhookright","arrowlefttophalf","arrowleftbothalf","arrownortheast","arrownorthwest","arrowrighttophalf","arrowrightbothalf","arrowsoutheast","arrowsouthwest","backslashbig","backslashBig","backslashBigg","backslashbigg","bardbl","bracehtipdownleft","bracehtipdownright","bracehtipupleft","bracehtipupright","braceleftBig","braceleftbig","braceleftbigg","braceleftBigg","bracerightBig","bracerightbig","bracerightbigg","bracerightBigg","bracketleftbig","bracketleftBig","bracketleftbigg","bracketleftBigg","bracketrightBig","bracketrightbig","bracketrightbigg","bracketrightBigg","ceilingleftbig","ceilingleftBig","ceilingleftBigg","ceilingleftbigg","ceilingrightbig","ceilingrightBig","ceilingrightbigg","ceilingrightBigg","circledotdisplay","circledottext","circlemultiplydisplay","circlemultiplytext","circleplusdisplay","circleplustext","contintegraldisplay","contintegraltext","coproductdisplay","coproducttext","floorleftBig","floorleftbig","floorleftbigg","floorleftBigg","floorrightbig","floorrightBig","floorrightBigg","floorrightbigg","hatwide","hatwider","hatwidest","intercal","integraldisplay","integraltext","intersectiondisplay","intersectiontext","logicalanddisplay","logicalandtext","logicalordisplay","logicalortext","parenleftBig","parenleftbig","parenleftBigg","parenleftbigg","parenrightBig","parenrightbig","parenrightBigg","parenrightbigg","prime","productdisplay","producttext","radicalbig","radicalBig","radicalBigg","radicalbigg","radicalbt","radicaltp","radicalvertex","slashbig","slashBig","slashBigg","slashbigg","summationdisplay","summationtext","tildewide","tildewider","tildewidest","uniondisplay","unionmultidisplay","unionmultitext","unionsqdisplay","unionsqtext","uniontext","vextenddouble","vextendsingle","getDingbatsGlyphsUnicode","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","getStdFontMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getSpecialPUASymbols","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","isRTLRangeFor","getNormalizedUnicodes","charsLength","numSubrs","getUshort","getLong","idOffset","idDelta","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","hasBuiltPath","compileGlyphImpl","cffInfo","glyphNameMap","parseCmap","parseCff","parseGlyfTable","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","dy","wx","sbx","asb","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decryptAscii","readNumberArray","readInt","readBoolean","nextChar","getToken","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","lsb","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","getPattern","Shadings","t0","domainArr","extendStart","extendEnd","extendArr","x1","r1","r2","distance","fnObj","NUMBER_OF_SAMPLES","colorStops","cssColor","background","RadialAxial","coordsArr","shadingType","r0","csNumComps","MeshStreamReader","align","readFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","coords","mesh","operators","ps","verticesLeft","coord","verticesPerRow","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","lut","t_","buildB","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","tmp4","maxY","coordsPacked","xy","colorsPacked","figures","decodeContext","bitsPerFlag","colorFn","patchMesh","decodeType4Shading","decodeType5Shading","decodeType6Shading","decodeType7Shading","updateBounds","buildFigureFromPatch","packData","Mesh","Dummy","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","createFromArray","getCached","fnRef","localFunction","_cache","PDFFunction","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","getSampleArray","sampleMul","strBytes","strIdx","typeFn","fromIR","IR","parseArray","constructSampled","toNumberArray","inputSize","outputSize","toMultiArray","bps","samples","constructSampledFromIR","ymin","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","interpolate","size_i","e0","n0","n1","rj","constructInterpolated","constructInterpolatedFromIR","constructStiched","fnRefs","fns","bounds","constructStichedFromIR","dmin","dmax","rmin","rmax","constructPostScript","constructPostScriptFromIR","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","copy","roll","PostScriptEvaluator","execute","operator","PostScriptCompiler","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","ExpressionBuilderVisitor","visitArgument","visitVariable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","compile","instructions","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","accept","expect","PostScriptTokenTypes","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","PostScriptToken","opCache","opValue","baseTypes","arabicTypes","isLTR","strLength","createBidiText","numBidi","charType","startLevel","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addend","isMask","isIndexed","maskDict","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","forceRGBA","createImageData","drawWidth","drawHeight","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","imageData","smaskData","maskData","computedLength","haveFullData","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","cbSourceName","cbTargetName","comObj","sourceName","targetName","ah","sendWithPromise","sendWithStream","streamId","startCapability","startCall","pullCall","cancelCall","isClosed","pull","pullCapability","cancelCapability","_createStreamSink","lastDesiredSize","sinkCapability","onPull","onCancel","isCancelled","success","_processStreamMessage","_postMessage","getRangeReader","cancelAllRequests","readers"],"mappings":"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","file":"pdf.worker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\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 { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\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  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  isString,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  stringToPDFString,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  get finished() {\n    return this._capability.promise;\n  }\n\n  finish() {\n    this._capability.resolve();\n  }\n\n  terminate() {\n    this.terminated = true;\n  }\n\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n}\n\nclass WorkerMessageHandler {\n  static setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // check if Uint8Array can be sent to worker\n      if (!(data instanceof Uint8Array)) {\n        handler.send(\"test\", null);\n        return;\n      }\n      // making sure postMessage transfers are working\n      const supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n\n      handler.send(\"test\", { supportTransfers });\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  }\n\n  static createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n\n      // Ensure that (primarily) Node.js users won't accidentally attempt to use\n      // a non-translated/non-polyfilled build of the library, since that would\n      // quickly fail anyway because of missing functionality (such as e.g.\n      // `ReadableStream` and `Promise.allSettled`).\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n        (typeof ReadableStream === \"undefined\" ||\n          typeof Promise.allSettled === \"undefined\")\n      ) {\n        throw new Error(\n          \"The browser/environment lacks native support for critical \" +\n            \"functionality used by the PDF.js library (e.g. \" +\n            \"`ReadableStream` and/or `Promise.allSettled`); \" +\n            \"please use an ES5-compatible build instead.\"\n        );\n      }\n    }\n\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + \"_worker\";\n    var handler = new MessageHandler(workerHandlerName, docId, port);\n\n    // Ensure that postMessage transfers are always correctly enabled/disabled,\n    // to prevent \"DataCloneError\" in browsers without transfers support.\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      if (!recoveryMode) {\n        // Check that at least the first page can be successfully loaded,\n        // since otherwise the XRef table is definitely not valid.\n        await pdfManager.ensureDoc(\"checkFirstPage\");\n      }\n\n      const [numPages, fingerprint] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprint\"),\n      ]);\n      return { numPages, fingerprint };\n    }\n\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = createPromiseCapability();\n      let newPdfManager;\n\n      var source = data.source;\n      if (source.data) {\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      var pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function () {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          var disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          newPdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            docBaseUrl\n          );\n          // There may be a chance that `newPdfManager` is not initialized for\n          // the first few runs of `readchunk` block of code. Be sure to send\n          // all cached chunks, if any, to chunked_stream via pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            newPdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(newPdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function (reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      var loaded = 0;\n      var flushChunks = function () {\n        var pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            evaluatorOptions,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function (resolve, reject) {\n        var readChunk = function ({ value, done }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += arrayByteLength(value);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          var task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function ({ password }) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(password);\n              pdfManagerReady();\n            })\n            .catch(function () {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n\n          // Try again with recoveryMode == true\n          if (!(reason instanceof XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n\n      ensureNotTerminated();\n\n      var evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n      };\n\n      getPdfManager(data, evaluatorOptions)\n        .then(function (newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function (stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex({ ref }) {\n      const pageRef = Ref.get(ref.num, ref.gen);\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetStats\", function wphSetupGetStats(data) {\n      return pdfManager.ensureXRef(\"stats\");\n    });\n\n    handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\"SaveDocument\", function ({\n      numPages,\n      annotationStorage,\n      filename,\n    }) {\n      pdfManager.requestLoadedStream();\n      const promises = [pdfManager.onLoadedStream()];\n      const document = pdfManager.pdfDocument;\n      for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n        promises.push(\n          pdfManager.getPage(pageIndex).then(function (page) {\n            const task = new WorkerTask(`Save: page ${pageIndex}`);\n            return page.save(handler, task, annotationStorage);\n          })\n        );\n      }\n\n      return Promise.all(promises).then(([stream, ...refs]) => {\n        let newRefs = [];\n        for (const ref of refs) {\n          newRefs = ref\n            .filter(x => x !== null)\n            .reduce((a, b) => a.concat(b), newRefs);\n        }\n\n        if (newRefs.length === 0) {\n          // No new refs so just return the initial bytes\n          return stream.bytes;\n        }\n\n        const xref = document.xref;\n        let newXrefInfo = Object.create(null);\n        if (xref.trailer) {\n          // Get string info from Info in order to compute fileId\n          const _info = Object.create(null);\n          const xrefInfo = xref.trailer.get(\"Info\") || null;\n          if (xrefInfo) {\n            xrefInfo.forEach((key, value) => {\n              if (isString(key) && isString(value)) {\n                _info[key] = stringToPDFString(value);\n              }\n            });\n          }\n\n          newXrefInfo = {\n            rootRef: xref.trailer.getRaw(\"Root\") || null,\n            encrypt: xref.trailer.getRaw(\"Encrypt\") || null,\n            newRef: xref.getNewRef(),\n            infoRef: xref.trailer.getRaw(\"Info\") || null,\n            info: _info,\n            fileIds: xref.trailer.getRaw(\"ID\") || null,\n            startXRef: document.startXRef,\n            filename,\n          };\n        }\n        xref.resetNewRef();\n\n        return incrementalUpdate(stream.bytes, newXrefInfo, newRefs);\n      });\n    });\n\n    handler.on(\n      \"GetOperatorList\",\n      function wphSetupRenderPage(data, sink) {\n        var pageIndex = data.pageIndex;\n        pdfManager.getPage(pageIndex).then(function (page) {\n          var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n          startWorkerTask(task);\n\n          // NOTE: Keep this condition in sync with the `info` helper function.\n          const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n          // Pre compile the pdf page and fetch the fonts/images.\n          page\n            .getOperatorList({\n              handler,\n              sink,\n              task,\n              intent: data.intent,\n              renderInteractiveForms: data.renderInteractiveForms,\n              annotationStorage: data.annotationStorage,\n            })\n            .then(\n              function (operatorListInfo) {\n                finishWorkerTask(task);\n\n                if (start) {\n                  info(\n                    `page=${pageIndex + 1} - getOperatorList: time=` +\n                      `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                  );\n                }\n                sink.close();\n              },\n              function (reason) {\n                finishWorkerTask(task);\n                if (task.terminated) {\n                  return; // ignoring errors from the terminated thread\n                }\n                // For compatibility with older behavior, generating unknown\n                // unsupported feature notification on errors.\n                handler.send(\"UnsupportedFeature\", {\n                  featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n                });\n\n                sink.error(reason);\n\n                // TODO: Should `reason` be re-thrown here (currently that\n                //       casues \"Uncaught exception: ...\" messages in the\n                //       console)?\n              }\n            );\n        });\n      },\n      this\n    );\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function (desiredSize) {};\n      sink.onCancel = function (reason) {};\n\n      pdfManager.getPage(pageIndex).then(function (page) {\n        var task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            normalizeWhitespace: data.normalizeWhitespace,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function () {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(/* manuallyTriggered = */ true);\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearPrimitiveCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      WorkerTasks.forEach(function (task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  }\n\n  static initializeFromPort(port) {\n    var handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n}\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not Node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerTask, WorkerMessageHandler };\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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/* eslint no-var: error */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\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 AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\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 StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\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  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 UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\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 have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(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 (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\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 * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\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) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = this.constructor.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);\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg);\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {}\n\nclass MissingPDFException extends BaseException {}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg);\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {}\n\nconst NullCharactersRegExp = /\\x00/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str) {\n  if (typeof str !== \"string\") {\n    warn(\"The argument for removeNullCharacters must be a string.\");\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n  assert(\n    bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n    \"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  assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\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\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n *   (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\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}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\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 (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n  // makeCssRgb() can be called thousands of times. Using ´rgbBuf` avoids\n  // creating many intermediate strings.\n  static makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join(\"\");\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 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.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  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\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) * (a + d) - 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 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n}\n\n// prettier-ignore\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,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 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, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  const length = str.length,\n    strBuf = [];\n  if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n    // UTF16BE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n      );\n    }\n  } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n    // UTF16LE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n      );\n    }\n  } else {\n    for (let i = 0; i < length; ++i) {\n      const code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  // replace \"(\", \")\" and \"\\\" by \"\\(\", \"\\)\" and \"\\\\\"\n  // in order to write it in a PDF file.\n  return str.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n  return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n  return typeof v === \"number\";\n}\n\nfunction isString(v) {\n  return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  return arr1.every(function (element, index) {\n    return element === arr2[index];\n  });\n}\n\nfunction getModificationDate(date = new Date(Date.now())) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    (date.getUTCDate() + 1).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\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nconst createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  const digits =\n    \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n  // eslint-disable-next-line no-shadow\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType });\n      return URL.createObjectURL(blob);\n    }\n\n    let buffer = `data:${contentType};base64,`;\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n        d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  BaseException,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingPDFException,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  escapeString,\n  getModificationDate,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  IsLittleEndianCached,\n  IsEvalSupportedCached,\n  removeNullCharacters,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\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/* eslint no-var: error */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n  // Provides support for globalThis in legacy browsers.\n  // Support: IE11/Edge, Opera\n  if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n    // eslint-disable-next-line no-global-assign\n    globalThis = require(\"core-js/es/global-this\");\n  }\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  const hasDOM = typeof window === \"object\" && typeof document === \"object\";\n  const userAgent =\n    (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n  const isIE = /Trident/.test(userAgent);\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Provides support for ChildNode.remove in legacy browsers.\n  // Support: IE.\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== \"undefined\") {\n      return;\n    }\n    Element.prototype.remove = function () {\n      if (this.parentNode) {\n        // eslint-disable-next-line mozilla/avoid-removeChild\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.{add, remove}, with more than\n  // one parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListAddRemove() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.classList.add(\"testOne\", \"testTwo\");\n\n    if (\n      div.classList.contains(\"testOne\") === true &&\n      div.classList.contains(\"testTwo\") === true\n    ) {\n      return;\n    }\n    const OriginalDOMTokenListAdd = DOMTokenList.prototype.add;\n    const OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;\n\n    DOMTokenList.prototype.add = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListAdd.call(this, token);\n      }\n    };\n    DOMTokenList.prototype.remove = function (...tokens) {\n      for (const token of tokens) {\n        OriginalDOMTokenListRemove.call(this, token);\n      }\n    };\n  })();\n\n  // Provides support for DOMTokenList.prototype.toggle, with the optional\n  // \"force\" parameter, in legacy browsers.\n  // Support: IE\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    if (div.classList.toggle(\"test\", 0) === false) {\n      return;\n    }\n\n    DOMTokenList.prototype.toggle = function (token) {\n      const force =\n        arguments.length > 1 ? !!arguments[1] : !this.contains(token);\n      return this[force ? \"add\" : \"remove\"](token), force;\n    };\n  })();\n\n  // Provides support for window.history.{pushState, replaceState}, with the\n  // `url` parameter set to `undefined`, without breaking the document URL.\n  // Support: IE\n  (function checkWindowHistoryPushStateReplaceState() {\n    if (!hasDOM || !isIE) {\n      return;\n    }\n    const OriginalPushState = window.history.pushState;\n    const OriginalReplaceState = window.history.replaceState;\n\n    window.history.pushState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalPushState.apply(this, args);\n    };\n    window.history.replaceState = function (state, title, url) {\n      const args = url === undefined ? [state, title] : [state, title, url];\n      OriginalReplaceState.apply(this, args);\n    };\n  })();\n\n  // Provides support for String.prototype.startsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringStartsWith() {\n    if (String.prototype.startsWith) {\n      return;\n    }\n    require(\"core-js/es/string/starts-with.js\");\n  })();\n\n  // Provides support for String.prototype.endsWith in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringEndsWith() {\n    if (String.prototype.endsWith) {\n      return;\n    }\n    require(\"core-js/es/string/ends-with.js\");\n  })();\n\n  // Provides support for String.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<41\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/string/includes.js\");\n  })();\n\n  // Provides support for Array.prototype.includes in legacy browsers.\n  // Support: IE, Chrome<47\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    require(\"core-js/es/array/includes.js\");\n  })();\n\n  // Provides support for Array.from in legacy browsers.\n  // Support: IE\n  (function checkArrayFrom() {\n    if (Array.from) {\n      return;\n    }\n    require(\"core-js/es/array/from.js\");\n  })();\n\n  // Provides support for Object.assign in legacy browsers.\n  // Support: IE\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    require(\"core-js/es/object/assign.js\");\n  })();\n\n  // Provides support for Object.fromEntries in legacy browsers.\n  // Support: IE, Chrome<73\n  (function checkObjectFromEntries() {\n    if (Object.fromEntries) {\n      return;\n    }\n    require(\"core-js/es/object/from-entries.js\");\n  })();\n\n  // Provides support for Math.log2 in legacy browsers.\n  // Support: IE, Chrome<38\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = require(\"core-js/es/math/log2.js\");\n  })();\n\n  // Provides support for Number.isNaN in legacy browsers.\n  // Support: IE.\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = require(\"core-js/es/number/is-nan.js\");\n  })();\n\n  // Provides support for Number.isInteger in legacy browsers.\n  // Support: IE, Chrome<34\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = require(\"core-js/es/number/is-integer.js\");\n  })();\n\n  // Provides support for TypedArray.prototype.slice in legacy browsers.\n  // Support: IE\n  (function checkTypedArraySlice() {\n    if (Uint8Array.prototype.slice) {\n      return;\n    }\n    require(\"core-js/es/typed-array/slice\");\n  })();\n\n  // Support: IE, Safari<11, Chrome<63\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise && globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: IE\n  (function checkURL() {\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n      // Prevent \"require is not a function\" errors in development mode,\n      // since the `URL` constructor should be available in modern browers.\n      return;\n    } else if (!PDFJSDev.test(\"GENERIC\")) {\n      // The `URL` constructor is assumed to be available in the extension\n      // builds.\n      return;\n    } else if (PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders don't use the `URL` constructor, so it\n      // doesn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    globalThis.URL = require(\"core-js/web/url.js\");\n  })();\n\n  // Support: IE, Node.js\n  (function checkReadableStream() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `ReadableStream`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    let isReadableStreamSupported = false;\n\n    if (typeof ReadableStream !== \"undefined\") {\n      // MS Edge may say it has ReadableStream but they are not up to spec yet.\n      try {\n        // eslint-disable-next-line no-new\n        new ReadableStream({\n          start(controller) {\n            controller.close();\n          },\n        });\n        isReadableStreamSupported = true;\n      } catch (e) {\n        // The ReadableStream constructor cannot be used.\n      }\n    }\n    if (isReadableStreamSupported) {\n      return;\n    }\n    globalThis.ReadableStream = require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n  })();\n\n  // We want to support Map iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkMapEntries() {\n    if (globalThis.Map && globalThis.Map.prototype.entries) {\n      return;\n    }\n    globalThis.Map = require(\"core-js/es/map/index.js\");\n  })();\n\n  // We want to support Set iteration, but it doesn't seem possible to easily\n  // test for that specifically; hence using a similarly unsupported property.\n  // Support: IE11\n  (function checkSetEntries() {\n    if (globalThis.Set && globalThis.Set.prototype.entries) {\n      return;\n    }\n    globalThis.Set = require(\"core-js/es/set/index.js\");\n  })();\n\n  // Support: IE<11, Safari<8, Chrome<36\n  (function checkWeakMap() {\n    if (globalThis.WeakMap) {\n      return;\n    }\n    globalThis.WeakMap = require(\"core-js/es/weak-map/index.js\");\n  })();\n\n  // Support: IE11\n  (function checkWeakSet() {\n    if (globalThis.WeakSet) {\n      return;\n    }\n    globalThis.WeakSet = require(\"core-js/es/weak-set/index.js\");\n  })();\n\n  // Provides support for String.codePointAt in legacy browsers.\n  // Support: IE11.\n  (function checkStringCodePointAt() {\n    if (String.prototype.codePointAt) {\n      return;\n    }\n    require(\"core-js/es/string/code-point-at.js\");\n  })();\n\n  // Provides support for String.fromCodePoint in legacy browsers.\n  // Support: IE11.\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = require(\"core-js/es/string/from-code-point.js\");\n  })();\n\n  // Support: IE\n  (function checkSymbol() {\n    if (globalThis.Symbol) {\n      return;\n    }\n    require(\"core-js/es/symbol/index.js\");\n  })();\n\n  // Provides support for String.prototype.padStart in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadStart() {\n    if (String.prototype.padStart) {\n      return;\n    }\n    require(\"core-js/es/string/pad-start.js\");\n  })();\n\n  // Provides support for String.prototype.padEnd in legacy browsers.\n  // Support: IE, Chrome<57\n  (function checkStringPadEnd() {\n    if (String.prototype.padEnd) {\n      return;\n    }\n    require(\"core-js/es/string/pad-end.js\");\n  })();\n\n  // Provides support for Object.values in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = require(\"core-js/es/object/values.js\");\n  })();\n\n  // Provides support for Object.entries in legacy browsers.\n  // Support: IE, Chrome<54\n  (function checkObjectEntries() {\n    if (Object.entries) {\n      return;\n    }\n    Object.entries = require(\"core-js/es/object/entries.js\");\n  })();\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/* 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 process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","require('../modules/es.global-this');\n\nmodule.exports = require('../internals/global');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://github.com/tc39/proposal-global\n$({ global: true }, {\n  globalThis: global\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\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.noTargetGet - prevent calling a getter on target\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] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\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    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","var 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 no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\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","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.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\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var 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","var 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","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\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 TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var 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","var 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.6.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","module.exports = {};\n","var has = require('../internals/has');\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) {\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 (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n","var getBuiltIn = require('../internals/get-built-in');\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\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 ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var 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.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\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) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\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 = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\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.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\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 = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\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    : typeof detection == 'function' ? 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","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = String(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return nativeStartsWith\n      ? nativeStartsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n","require('../../modules/es.string.ends-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'endsWith');\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = String(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = toLength(that.length);\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = String(searchString);\n    return nativeEndsWith\n      ? nativeEndsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n","require('../../modules/es.string.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","require('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = 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    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\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.github.io/ecma262/#sec-object.create\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 : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\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++], Properties[key]);\n  return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n  if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n  if (!options) options = {};\n  var method = [][METHOD_NAME];\n  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n  var argument0 = has(options, 0) ? options[0] : thrower;\n  var argument1 = has(options, 1) ? options[1] : undefined;\n\n  return cache[METHOD_NAME] = !!method && !fails(function () {\n    if (ACCESSORS && !DESCRIPTORS) return true;\n    var O = { length: -1 };\n\n    if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n    else O[1] = 1;\n\n    method.call(O, argument0, argument1);\n  });\n};\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\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\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\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\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\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 ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","module.exports = {};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(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.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","var anObject = require('../internals/an-object');\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  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n","var 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 toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\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' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var 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","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.from-entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.fromEntries;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, undefined, true);\n    return obj;\n  }\n});\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n  var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n  var iterator, iterFn, index, length, result, next, step;\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = toLength(iterable.length); length > index; index++) {\n        result = AS_ENTRIES\n          ? boundFunction(anObject(step = iterable[index])[0], step[1])\n          : boundFunction(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = iterFn.call(iterable);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n\niterate.stop = function (result) {\n  return new Result(true, result);\n};\n","require('../../modules/es.math.log2');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Math.log2;\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.github.io/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: function log2(x) {\n    return log(x) / LN2;\n  }\n});\n","require('../../modules/es.number.is-nan');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number.isNaN;\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n","require('../../modules/es.number.is-integer');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number.isInteger;\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.github.io/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isInteger\n});\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.github.io/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../../modules/es.typed-array.slice');\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line no-undef\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = $slice.call(aTypedArray(this), start, end);\n  var C = speciesConstructor(this, this.constructor);\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\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');\n\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 isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\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_REQIRED = false;\nvar NAME;\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 isView = function isView(it) {\n  var klass = classof(it);\n  return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (setPrototypeOf) {\n    if (isPrototypeOf.call(TypedArray, C)) return C;\n  } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n      return C;\n    }\n  } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n      delete TypedArrayConstructor.prototype[KEY];\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    redefine(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\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 && has(TypedArrayConstructor, KEY)) {\n        delete TypedArrayConstructor[KEY];\n      }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[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      redefine(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow\n  TypedArray = function TypedArray() {\n    throw 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 && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\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_REQIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.finally');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n  if (!GLOBAL_CORE_JS_PROMISE) {\n    // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n    // We can't detect it synchronously, so just check versions\n    if (V8_VERSION === 66) return true;\n    // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n  }\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = PromiseConstructor.resolve(1);\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(promise, state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (handler = global['on' + name]) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n  task.call(global, function () {\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n  task.call(global, function () {\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n  return function (value) {\n    fn(promise, state, value, unwrap);\n  };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          then.call(value,\n            bind(internalResolve, promise, wrapper, state),\n            bind(internalReject, promise, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(promise, wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(promise, state, false);\n    }\n  } catch (error) {\n    internalReject(promise, { done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromiseConstructor, PROMISE);\n    aFunction(executor);\n    Internal.call(this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n    } catch (error) {\n      internalReject(this, state, error);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      state.reactions.push(reaction);\n      if (state.state != PENDING) notify(this, state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, promise, state);\n    this.reject = bind(internalReject, promise, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && typeof NativePromise == 'function') {\n    nativeThen = NativePromise.prototype.then;\n\n    // wrap native Promise#then for native async functions\n    redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n      var that = this;\n      return new PromiseConstructor(function (resolve, reject) {\n        nativeThen.call(that, resolve, reject);\n      }).then(onFulfilled, onRejected);\n    // https://github.com/zloirock/core-js/issues/640\n    }, { unsafe: true });\n\n    // wrap fetch result\n    if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n      // eslint-disable-next-line no-unused-vars\n      fetch: function fetch(input /* , init */) {\n        return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n      }\n    });\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.github.io/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    capability.reject.call(undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.github.io/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.github.io/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        $promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.github.io/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      iterate(iterable, function (promise) {\n        $promiseResolve.call(C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (classof(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    typeof postMessage == 'function' &&\n    !global.importScripts &&\n    !fails(post) &&\n    location.protocol !== 'file:'\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  } else if (MutationObserver && !IS_IOS) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    then = promise.then;\n    notify = function () {\n      then.call(promise, flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (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 && +version;\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://github.com/tc39/proposal-promise-allSettled\n$({ target: 'Promise', stat: true }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (e) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: e };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = typeof onFinally == 'function';\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n  redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","require('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URL;\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n  var result, codePoints, index;\n  if (input.charAt(0) == '[') {\n    if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n    result = parseIPv6(input.slice(1, -1));\n    if (!result) return INVALID_HOST;\n    url.host = result;\n  // opaque host\n  } else if (!isSpecial(url)) {\n    if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n    result = '';\n    codePoints = arrayFrom(input);\n    for (index = 0; index < codePoints.length; index++) {\n      result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n    }\n    url.host = result;\n  } else {\n    input = toASCII(input);\n    if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n    result = parseIPv4(input);\n    if (result === null) return INVALID_HOST;\n    url.host = result;\n  }\n};\n\nvar parseIPv4 = function (input) {\n  var parts = input.split('.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.pop();\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && part.charAt(0) == '0') {\n      radix = HEX_START.test(part) ? 16 : 8;\n      part = part.slice(radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n      number = parseInt(part, radix);\n    }\n    numbers.push(number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = numbers.pop();\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var char = function () {\n    return input.charAt(pointer);\n  };\n\n  if (char() == ':') {\n    if (input.charAt(1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (char()) {\n    if (pieceIndex == 8) return;\n    if (char() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && HEX.test(char())) {\n      value = value * 16 + parseInt(char(), 16);\n      pointer++;\n      length++;\n    }\n    if (char() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (char()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (char() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!DIGIT.test(char())) return;\n        while (DIGIT.test(char())) {\n          number = parseInt(char(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (char() == ':') {\n      pointer++;\n      if (!char()) return;\n    } else if (char()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      result.unshift(host % 256);\n      host = floor(host / 256);\n    } return result.join('.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += host[index].toString(16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n  var code = codeAt(char, 0);\n  return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\nvar isSpecial = function (url) {\n  return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n  return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n  return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && ALPHA.test(string.charAt(0))\n    && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n    string.length == 2 ||\n    ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\nvar shortenURLsPath = function (url) {\n  var path = url.path;\n  var pathSize = path.length;\n  if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n    path.pop();\n  }\n};\n\nvar isSingleDot = function (segment) {\n  return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n  segment = segment.toLowerCase();\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n  var state = stateOverride || SCHEME_START;\n  var pointer = 0;\n  var buffer = '';\n  var seenAt = false;\n  var seenBracket = false;\n  var seenPasswordToken = false;\n  var codePoints, char, bufferCodePoints, failure;\n\n  if (!stateOverride) {\n    url.scheme = '';\n    url.username = '';\n    url.password = '';\n    url.host = null;\n    url.port = null;\n    url.path = [];\n    url.query = null;\n    url.fragment = null;\n    url.cannotBeABaseURL = false;\n    input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n  }\n\n  input = input.replace(TAB_AND_NEW_LINE, '');\n\n  codePoints = arrayFrom(input);\n\n  while (pointer <= codePoints.length) {\n    char = codePoints[pointer];\n    switch (state) {\n      case SCHEME_START:\n        if (char && ALPHA.test(char)) {\n          buffer += char.toLowerCase();\n          state = SCHEME;\n        } else if (!stateOverride) {\n          state = NO_SCHEME;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case SCHEME:\n        if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n          buffer += char.toLowerCase();\n        } else if (char == ':') {\n          if (stateOverride && (\n            (isSpecial(url) != has(specialSchemes, buffer)) ||\n            (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n            (url.scheme == 'file' && !url.host)\n          )) return;\n          url.scheme = buffer;\n          if (stateOverride) {\n            if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n            return;\n          }\n          buffer = '';\n          if (url.scheme == 'file') {\n            state = FILE;\n          } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n            state = SPECIAL_RELATIVE_OR_AUTHORITY;\n          } else if (isSpecial(url)) {\n            state = SPECIAL_AUTHORITY_SLASHES;\n          } else if (codePoints[pointer + 1] == '/') {\n            state = PATH_OR_AUTHORITY;\n            pointer++;\n          } else {\n            url.cannotBeABaseURL = true;\n            url.path.push('');\n            state = CANNOT_BE_A_BASE_URL_PATH;\n          }\n        } else if (!stateOverride) {\n          buffer = '';\n          state = NO_SCHEME;\n          pointer = 0;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case NO_SCHEME:\n        if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n        if (base.cannotBeABaseURL && char == '#') {\n          url.scheme = base.scheme;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          url.cannotBeABaseURL = true;\n          state = FRAGMENT;\n          break;\n        }\n        state = base.scheme == 'file' ? FILE : RELATIVE;\n        continue;\n\n      case SPECIAL_RELATIVE_OR_AUTHORITY:\n        if (char == '/' && codePoints[pointer + 1] == '/') {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          pointer++;\n        } else {\n          state = RELATIVE;\n          continue;\n        } break;\n\n      case PATH_OR_AUTHORITY:\n        if (char == '/') {\n          state = AUTHORITY;\n          break;\n        } else {\n          state = PATH;\n          continue;\n        }\n\n      case RELATIVE:\n        url.scheme = base.scheme;\n        if (char == EOF) {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n        } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n          state = RELATIVE_SLASH;\n        } else if (char == '?') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          state = FRAGMENT;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.path.pop();\n          state = PATH;\n          continue;\n        } break;\n\n      case RELATIVE_SLASH:\n        if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        } else if (char == '/') {\n          state = AUTHORITY;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          state = PATH;\n          continue;\n        } break;\n\n      case SPECIAL_AUTHORITY_SLASHES:\n        state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n        pointer++;\n        break;\n\n      case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n        if (char != '/' && char != '\\\\') {\n          state = AUTHORITY;\n          continue;\n        } break;\n\n      case AUTHORITY:\n        if (char == '@') {\n          if (seenAt) buffer = '%40' + buffer;\n          seenAt = true;\n          bufferCodePoints = arrayFrom(buffer);\n          for (var i = 0; i < bufferCodePoints.length; i++) {\n            var codePoint = bufferCodePoints[i];\n            if (codePoint == ':' && !seenPasswordToken) {\n              seenPasswordToken = true;\n              continue;\n            }\n            var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n            if (seenPasswordToken) url.password += encodedCodePoints;\n            else url.username += encodedCodePoints;\n          }\n          buffer = '';\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (seenAt && buffer == '') return INVALID_AUTHORITY;\n          pointer -= arrayFrom(buffer).length + 1;\n          buffer = '';\n          state = HOST;\n        } else buffer += char;\n        break;\n\n      case HOST:\n      case HOSTNAME:\n        if (stateOverride && url.scheme == 'file') {\n          state = FILE_HOST;\n          continue;\n        } else if (char == ':' && !seenBracket) {\n          if (buffer == '') return INVALID_HOST;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PORT;\n          if (stateOverride == HOSTNAME) return;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (isSpecial(url) && buffer == '') return INVALID_HOST;\n          if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PATH_START;\n          if (stateOverride) return;\n          continue;\n        } else {\n          if (char == '[') seenBracket = true;\n          else if (char == ']') seenBracket = false;\n          buffer += char;\n        } break;\n\n      case PORT:\n        if (DIGIT.test(char)) {\n          buffer += char;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          stateOverride\n        ) {\n          if (buffer != '') {\n            var port = parseInt(buffer, 10);\n            if (port > 0xFFFF) return INVALID_PORT;\n            url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n            buffer = '';\n          }\n          if (stateOverride) return;\n          state = PATH_START;\n          continue;\n        } else return INVALID_PORT;\n        break;\n\n      case FILE:\n        url.scheme = 'file';\n        if (char == '/' || char == '\\\\') state = FILE_SLASH;\n        else if (base && base.scheme == 'file') {\n          if (char == EOF) {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n          } else if (char == '?') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n              url.host = base.host;\n              url.path = base.path.slice();\n              shortenURLsPath(url);\n            }\n            state = PATH;\n            continue;\n          }\n        } else {\n          state = PATH;\n          continue;\n        } break;\n\n      case FILE_SLASH:\n        if (char == '/' || char == '\\\\') {\n          state = FILE_HOST;\n          break;\n        }\n        if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n          if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n          else url.host = base.host;\n        }\n        state = PATH;\n        continue;\n\n      case FILE_HOST:\n        if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n          if (!stateOverride && isWindowsDriveLetter(buffer)) {\n            state = PATH;\n          } else if (buffer == '') {\n            url.host = '';\n            if (stateOverride) return;\n            state = PATH_START;\n          } else {\n            failure = parseHost(url, buffer);\n            if (failure) return failure;\n            if (url.host == 'localhost') url.host = '';\n            if (stateOverride) return;\n            buffer = '';\n            state = PATH_START;\n          } continue;\n        } else buffer += char;\n        break;\n\n      case PATH_START:\n        if (isSpecial(url)) {\n          state = PATH;\n          if (char != '/' && char != '\\\\') continue;\n        } else if (!stateOverride && char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          state = PATH;\n          if (char != '/') continue;\n        } break;\n\n      case PATH:\n        if (\n          char == EOF || char == '/' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          (!stateOverride && (char == '?' || char == '#'))\n        ) {\n          if (isDoubleDot(buffer)) {\n            shortenURLsPath(url);\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else if (isSingleDot(buffer)) {\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else {\n            if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n              if (url.host) url.host = '';\n              buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n            }\n            url.path.push(buffer);\n          }\n          buffer = '';\n          if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n            while (url.path.length > 1 && url.path[0] === '') {\n              url.path.shift();\n            }\n          }\n          if (char == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          }\n        } else {\n          buffer += percentEncode(char, pathPercentEncodeSet);\n        } break;\n\n      case CANNOT_BE_A_BASE_URL_PATH:\n        if (char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case QUERY:\n        if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          if (char == \"'\" && isSpecial(url)) url.query += '%27';\n          else if (char == '#') url.query += '%23';\n          else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case FRAGMENT:\n        if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n        break;\n    }\n\n    pointer++;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLConstructor, 'URL');\n  var base = arguments.length > 1 ? arguments[1] : undefined;\n  var urlString = String(url);\n  var state = setInternalState(that, { type: 'URL' });\n  var baseState, failure;\n  if (base !== undefined) {\n    if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n    else {\n      failure = parseURL(baseState = {}, String(base));\n      if (failure) throw TypeError(failure);\n    }\n  }\n  failure = parseURL(state, urlString, null, baseState);\n  if (failure) throw TypeError(failure);\n  var searchParams = state.searchParams = new URLSearchParams();\n  var searchParamsState = getInternalSearchParamsState(searchParams);\n  searchParamsState.updateSearchParams(state.query);\n  searchParamsState.updateURL = function () {\n    state.query = String(searchParams) || null;\n  };\n  if (!DESCRIPTORS) {\n    that.href = serializeURL.call(that);\n    that.origin = getOrigin.call(that);\n    that.protocol = getProtocol.call(that);\n    that.username = getUsername.call(that);\n    that.password = getPassword.call(that);\n    that.host = getHost.call(that);\n    that.hostname = getHostname.call(that);\n    that.port = getPort.call(that);\n    that.pathname = getPathname.call(that);\n    that.search = getSearch.call(that);\n    that.searchParams = getSearchParams.call(that);\n    that.hash = getHash.call(that);\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var username = url.username;\n  var password = url.password;\n  var host = url.host;\n  var port = url.port;\n  var path = url.path;\n  var query = url.query;\n  var fragment = url.fragment;\n  var output = scheme + ':';\n  if (host !== null) {\n    output += '//';\n    if (includesCredentials(url)) {\n      output += username + (password ? ':' + password : '') + '@';\n    }\n    output += serializeHost(host);\n    if (port !== null) output += ':' + port;\n  } else if (scheme == 'file') output += '//';\n  output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n  if (query !== null) output += '?' + query;\n  if (fragment !== null) output += '#' + fragment;\n  return output;\n};\n\nvar getOrigin = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var port = url.port;\n  if (scheme == 'blob') try {\n    return new URL(scheme.path[0]).origin;\n  } catch (error) {\n    return 'null';\n  }\n  if (scheme == 'file' || !isSpecial(url)) return 'null';\n  return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n  return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n  return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n  return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n  var url = getInternalURLState(this);\n  var host = url.host;\n  var port = url.port;\n  return host === null ? ''\n    : port === null ? serializeHost(host)\n    : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n  var host = getInternalURLState(this).host;\n  return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n  var port = getInternalURLState(this).port;\n  return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n  var url = getInternalURLState(this);\n  var path = url.path;\n  return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n  var query = getInternalURLState(this).query;\n  return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n  return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n  var fragment = getInternalURLState(this).fragment;\n  return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n  return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n  defineProperties(URLPrototype, {\n    // `URL.prototype.href` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-href\n    href: accessorDescriptor(serializeURL, function (href) {\n      var url = getInternalURLState(this);\n      var urlString = String(href);\n      var failure = parseURL(url, urlString);\n      if (failure) throw TypeError(failure);\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.origin` getter\n    // https://url.spec.whatwg.org/#dom-url-origin\n    origin: accessorDescriptor(getOrigin),\n    // `URL.prototype.protocol` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-protocol\n    protocol: accessorDescriptor(getProtocol, function (protocol) {\n      var url = getInternalURLState(this);\n      parseURL(url, String(protocol) + ':', SCHEME_START);\n    }),\n    // `URL.prototype.username` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-username\n    username: accessorDescriptor(getUsername, function (username) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(username));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.username = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.password` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-password\n    password: accessorDescriptor(getPassword, function (password) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(password));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.password = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.host` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-host\n    host: accessorDescriptor(getHost, function (host) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(host), HOST);\n    }),\n    // `URL.prototype.hostname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hostname\n    hostname: accessorDescriptor(getHostname, function (hostname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(hostname), HOSTNAME);\n    }),\n    // `URL.prototype.port` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-port\n    port: accessorDescriptor(getPort, function (port) {\n      var url = getInternalURLState(this);\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      port = String(port);\n      if (port == '') url.port = null;\n      else parseURL(url, port, PORT);\n    }),\n    // `URL.prototype.pathname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-pathname\n    pathname: accessorDescriptor(getPathname, function (pathname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      url.path = [];\n      parseURL(url, pathname + '', PATH_START);\n    }),\n    // `URL.prototype.search` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-search\n    search: accessorDescriptor(getSearch, function (search) {\n      var url = getInternalURLState(this);\n      search = String(search);\n      if (search == '') {\n        url.query = null;\n      } else {\n        if ('?' == search.charAt(0)) search = search.slice(1);\n        url.query = '';\n        parseURL(url, search, QUERY);\n      }\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.searchParams` getter\n    // https://url.spec.whatwg.org/#dom-url-searchparams\n    searchParams: accessorDescriptor(getSearchParams),\n    // `URL.prototype.hash` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hash\n    hash: accessorDescriptor(getHash, function (hash) {\n      var url = getInternalURLState(this);\n      hash = String(hash);\n      if (hash == '') {\n        url.fragment = null;\n        return;\n      }\n      if ('#' == hash.charAt(0)) hash = hash.slice(1);\n      url.fragment = '';\n      parseURL(url, hash, FRAGMENT);\n    })\n  });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  // eslint-disable-next-line no-unused-vars\n  if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n    return nativeCreateObjectURL.apply(NativeURL, arguments);\n  });\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  // eslint-disable-next-line no-unused-vars\n  if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n    return nativeRevokeObjectURL.apply(NativeURL, arguments);\n  });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = string.charCodeAt(counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = string.charCodeAt(counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n    delta = floor(delta / baseMinusTMin);\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line  max-statements\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      output.push(stringFromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    output.push(delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        for (var k = base; /* no condition */; k += base) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n        }\n\n        output.push(stringFromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        ++handledCPCount;\n      }\n    }\n\n    ++delta;\n    ++n;\n  }\n  return output.join('');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n  }\n  return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = it.replace(plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = result.replace(percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replace[match];\n};\n\nvar serialize = function (it) {\n  return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n  if (query) {\n    var attributes = query.split('&');\n    var index = 0;\n    var attribute, entry;\n    while (index < attributes.length) {\n      attribute = attributes[index++];\n      if (attribute.length) {\n        entry = attribute.split('=');\n        result.push({\n          key: deserialize(entry.shift()),\n          value: deserialize(entry.join('='))\n        });\n      }\n    }\n  }\n};\n\nvar updateSearchParams = function (query) {\n  this.entries.length = 0;\n  parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var that = this;\n  var entries = [];\n  var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n  setInternalState(that, {\n    type: URL_SEARCH_PARAMS,\n    entries: entries,\n    updateURL: function () { /* empty */ },\n    updateSearchParams: updateSearchParams\n  });\n\n  if (init !== undefined) {\n    if (isObject(init)) {\n      iteratorMethod = getIteratorMethod(init);\n      if (typeof iteratorMethod === 'function') {\n        iterator = iteratorMethod.call(init);\n        next = iterator.next;\n        while (!(step = next.call(iterator)).done) {\n          entryIterator = getIterator(anObject(step.value));\n          entryNext = entryIterator.next;\n          if (\n            (first = entryNext.call(entryIterator)).done ||\n            (second = entryNext.call(entryIterator)).done ||\n            !entryNext.call(entryIterator).done\n          ) throw TypeError('Expected sequence with length 2');\n          entries.push({ key: first.value + '', value: second.value + '' });\n        }\n      } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n    } else {\n      parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n    }\n  }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.appent` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    state.entries.push({ key: name + '', value: value + '' });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) entries.splice(index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) result.push(entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = name + '';\n    var val = value + '';\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) entries.splice(index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) entries.push({ key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    // Array#sort is not stable in some engines\n    var slice = entries.slice();\n    var entry, entriesIndex, sliceIndex;\n    entries.length = 0;\n    for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n      entry = slice[sliceIndex];\n      for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n        if (entries[entriesIndex].key > entry.key) {\n          entries.splice(entriesIndex, 0, entry);\n          break;\n        }\n      }\n      if (entriesIndex === sliceIndex) entries.push(entry);\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n  var entries = getInternalParamsState(this).entries;\n  var result = [];\n  var index = 0;\n  var entry;\n  while (index < entries.length) {\n    entry = entries[index++];\n    result.push(serialize(entry.key) + '=' + serialize(entry.value));\n  } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n  $({ global: true, enumerable: true, forced: true }, {\n    fetch: function fetch(input /* , init */) {\n      var args = [input];\n      var init, body, headers;\n      if (arguments.length > 1) {\n        init = arguments[1];\n        if (isObject(init)) {\n          body = init.body;\n          if (classof(body) === URL_SEARCH_PARAMS) {\n            headers = init.headers ? new Headers(init.headers) : new Headers();\n            if (!headers.has('content-type')) {\n              headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n            }\n            init = create(init, {\n              body: createPropertyDescriptor(0, String(body)),\n              headers: createPropertyDescriptor(0, headers)\n            });\n          }\n        }\n        args.push(init);\n      } return $fetch.apply(this, args);\n    }\n  });\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n  var iteratorMethod = getIteratorMethod(it);\n  if (typeof iteratorMethod != 'function') {\n    throw TypeError(String(it) + ' is not iterable');\n  } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\nvar $ = require('../internals/export');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return URL.prototype.toString.call(this);\n  }\n});\n","/**\n * web-streams-polyfill v2.1.1\n */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global.WebStreamsPolyfill = {}));\n}(this, (function (exports) { 'use strict';\n\n    /// <reference lib=\"es2015.symbol\" />\n    var SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ?\n        Symbol :\n        function (description) { return \"Symbol(\" + description + \")\"; };\n\n    /// <reference lib=\"dom\" />\n    function noop() {\n        // do nothing\n    }\n\n    /// <reference lib=\"es2015.core\" />\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\n    var NumberIsNaN = Number.isNaN || function (x) {\n        // eslint-disable-next-line no-self-compare\n        return x !== x;\n    };\n\n    var rethrowAssertionErrorRejection =  noop;\n\n    function typeIsObject(x) {\n        return (typeof x === 'object' && x !== null) || typeof x === 'function';\n    }\n    function createArrayFromList(elements) {\n        // We use arrays to represent lists, so this is basically a no-op.\n        // Do a slice though just in case we happen to depend on the unique-ness.\n        return elements.slice();\n    }\n    function ArrayBufferCopy(dest, destOffset, src, srcOffset, n) {\n        new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n    }\n    function IsFiniteNonNegativeNumber(v) {\n        if (IsNonNegativeNumber(v) === false) {\n            return false;\n        }\n        if (v === Infinity) {\n            return false;\n        }\n        return true;\n    }\n    function IsNonNegativeNumber(v) {\n        if (typeof v !== 'number') {\n            return false;\n        }\n        if (NumberIsNaN(v)) {\n            return false;\n        }\n        if (v < 0) {\n            return false;\n        }\n        return true;\n    }\n    function Call(F, V, args) {\n        if (typeof F !== 'function') {\n            throw new TypeError('Argument is not a function');\n        }\n        return Function.prototype.apply.call(F, V, args);\n    }\n    function CreateAlgorithmFromUnderlyingMethod(underlyingObject, methodName, algoArgCount, extraArgs) {\n        var method = underlyingObject[methodName];\n        if (method !== undefined) {\n            if (typeof method !== 'function') {\n                throw new TypeError(method + \" is not a method\");\n            }\n            switch (algoArgCount) {\n                case 0: {\n                    return function () {\n                        return PromiseCall(method, underlyingObject, extraArgs);\n                    };\n                }\n                case 1: {\n                    return function (arg) {\n                        var fullArgs = [arg].concat(extraArgs);\n                        return PromiseCall(method, underlyingObject, fullArgs);\n                    };\n                }\n            }\n        }\n        return function () { return promiseResolvedWith(undefined); };\n    }\n    function InvokeOrNoop(O, P, args) {\n        var method = O[P];\n        if (method === undefined) {\n            return undefined;\n        }\n        return Call(method, O, args);\n    }\n    function PromiseCall(F, V, args) {\n        try {\n            return promiseResolvedWith(Call(F, V, args));\n        }\n        catch (value) {\n            return promiseRejectedWith(value);\n        }\n    }\n    // Not implemented correctly\n    function TransferArrayBuffer(O) {\n        return O;\n    }\n    // Not implemented correctly\n    function IsDetachedBuffer(O) {\n        return false;\n    }\n    function ValidateAndNormalizeHighWaterMark(highWaterMark) {\n        highWaterMark = Number(highWaterMark);\n        if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n            throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n        }\n        return highWaterMark;\n    }\n    function MakeSizeAlgorithmFromSizeFunction(size) {\n        if (size === undefined) {\n            return function () { return 1; };\n        }\n        if (typeof size !== 'function') {\n            throw new TypeError('size property of a queuing strategy must be a function');\n        }\n        return function (chunk) { return size(chunk); };\n    }\n    var originalPromise = Promise;\n    var originalPromiseThen = Promise.prototype.then;\n    var originalPromiseResolve = Promise.resolve.bind(originalPromise);\n    var originalPromiseReject = Promise.reject.bind(originalPromise);\n    function newPromise(executor) {\n        return new originalPromise(executor);\n    }\n    function promiseResolvedWith(value) {\n        return originalPromiseResolve(value);\n    }\n    function promiseRejectedWith(reason) {\n        return originalPromiseReject(reason);\n    }\n    function PerformPromiseThen(promise, onFulfilled, onRejected) {\n        // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an\n        // approximation.\n        return originalPromiseThen.call(promise, onFulfilled, onRejected);\n    }\n    function uponPromise(promise, onFulfilled, onRejected) {\n        PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n    }\n    function uponFulfillment(promise, onFulfilled) {\n        uponPromise(promise, onFulfilled);\n    }\n    function uponRejection(promise, onRejected) {\n        uponPromise(promise, undefined, onRejected);\n    }\n    function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n        return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n    }\n    function setPromiseIsHandledToTrue(promise) {\n        PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n    }\n\n    // Original from Chromium\n    // https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\n    var QUEUE_MAX_ARRAY_SIZE = 16384;\n    /**\n     * Simple queue structure.\n     *\n     * Avoids scalability issues with using a packed array directly by using\n     * multiple arrays in a linked list and keeping the array size bounded.\n     */\n    var SimpleQueue = /** @class */ (function () {\n        function SimpleQueue() {\n            this._cursor = 0;\n            this._size = 0;\n            // _front and _back are always defined.\n            this._front = {\n                _elements: [],\n                _next: undefined\n            };\n            this._back = this._front;\n            // The cursor is used to avoid calling Array.shift().\n            // It contains the index of the front element of the array inside the\n            // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).\n            this._cursor = 0;\n            // When there is only one node, size === elements.length - cursor.\n            this._size = 0;\n        }\n        Object.defineProperty(SimpleQueue.prototype, \"length\", {\n            get: function () {\n                return this._size;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        // For exception safety, this method is structured in order:\n        // 1. Read state\n        // 2. Calculate required state mutations\n        // 3. Perform state mutations\n        SimpleQueue.prototype.push = function (element) {\n            var oldBack = this._back;\n            var newBack = oldBack;\n            if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n                newBack = {\n                    _elements: [],\n                    _next: undefined\n                };\n            }\n            // push() is the mutation most likely to throw an exception, so it\n            // goes first.\n            oldBack._elements.push(element);\n            if (newBack !== oldBack) {\n                this._back = newBack;\n                oldBack._next = newBack;\n            }\n            ++this._size;\n        };\n        // Like push(), shift() follows the read -> calculate -> mutate pattern for\n        // exception safety.\n        SimpleQueue.prototype.shift = function () { // must not be called on an empty queue\n            var oldFront = this._front;\n            var newFront = oldFront;\n            var oldCursor = this._cursor;\n            var newCursor = oldCursor + 1;\n            var elements = oldFront._elements;\n            var element = elements[oldCursor];\n            if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n                newFront = oldFront._next;\n                newCursor = 0;\n            }\n            // No mutations before this point.\n            --this._size;\n            this._cursor = newCursor;\n            if (oldFront !== newFront) {\n                this._front = newFront;\n            }\n            // Permit shifted element to be garbage collected.\n            elements[oldCursor] = undefined;\n            return element;\n        };\n        // The tricky thing about forEach() is that it can be called\n        // re-entrantly. The queue may be mutated inside the callback. It is easy to\n        // see that push() within the callback has no negative effects since the end\n        // of the queue is checked for on every iteration. If shift() is called\n        // repeatedly within the callback then the next iteration may return an\n        // element that has been removed. In this case the callback will be called\n        // with undefined values until we either \"catch up\" with elements that still\n        // exist or reach the back of the queue.\n        SimpleQueue.prototype.forEach = function (callback) {\n            var i = this._cursor;\n            var node = this._front;\n            var elements = node._elements;\n            while (i !== elements.length || node._next !== undefined) {\n                if (i === elements.length) {\n                    node = node._next;\n                    elements = node._elements;\n                    i = 0;\n                    if (elements.length === 0) {\n                        break;\n                    }\n                }\n                callback(elements[i]);\n                ++i;\n            }\n        };\n        // Return the element that would be returned if shift() was called now,\n        // without modifying the queue.\n        SimpleQueue.prototype.peek = function () { // must not be called on an empty queue\n            var front = this._front;\n            var cursor = this._cursor;\n            return front._elements[cursor];\n        };\n        return SimpleQueue;\n    }());\n\n    function ReadableStreamCreateReadResult(value, done, forAuthorCode) {\n        var prototype = null;\n        if (forAuthorCode === true) {\n            prototype = Object.prototype;\n        }\n        var obj = Object.create(prototype);\n        obj.value = value;\n        obj.done = done;\n        return obj;\n    }\n    function ReadableStreamReaderGenericInitialize(reader, stream) {\n        reader._forAuthorCode = true;\n        reader._ownerReadableStream = stream;\n        stream._reader = reader;\n        if (stream._state === 'readable') {\n            defaultReaderClosedPromiseInitialize(reader);\n        }\n        else if (stream._state === 'closed') {\n            defaultReaderClosedPromiseInitializeAsResolved(reader);\n        }\n        else {\n            defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n        }\n    }\n    // A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n    // check.\n    function ReadableStreamReaderGenericCancel(reader, reason) {\n        var stream = reader._ownerReadableStream;\n        return ReadableStreamCancel(stream, reason);\n    }\n    function ReadableStreamReaderGenericRelease(reader) {\n        if (reader._ownerReadableStream._state === 'readable') {\n            defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n        }\n        else {\n            defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n        }\n        reader._ownerReadableStream._reader = undefined;\n        reader._ownerReadableStream = undefined;\n    }\n    // Helper functions for the readers.\n    function readerLockException(name) {\n        return new TypeError('Cannot ' + name + ' a stream using a released reader');\n    }\n    // Helper functions for the ReadableStreamDefaultReader.\n    function defaultReaderClosedPromiseInitialize(reader) {\n        reader._closedPromise = newPromise(function (resolve, reject) {\n            reader._closedPromise_resolve = resolve;\n            reader._closedPromise_reject = reject;\n        });\n    }\n    function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n        defaultReaderClosedPromiseInitialize(reader);\n        defaultReaderClosedPromiseReject(reader, reason);\n    }\n    function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n        defaultReaderClosedPromiseInitialize(reader);\n        defaultReaderClosedPromiseResolve(reader);\n    }\n    function defaultReaderClosedPromiseReject(reader, reason) {\n        setPromiseIsHandledToTrue(reader._closedPromise);\n        reader._closedPromise_reject(reason);\n        reader._closedPromise_resolve = undefined;\n        reader._closedPromise_reject = undefined;\n    }\n    function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n        defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n    }\n    function defaultReaderClosedPromiseResolve(reader) {\n        reader._closedPromise_resolve(undefined);\n        reader._closedPromise_resolve = undefined;\n        reader._closedPromise_reject = undefined;\n    }\n\n    var CancelSteps = SymbolPolyfill('[[CancelSteps]]');\n    var PullSteps = SymbolPolyfill('[[PullSteps]]');\n\n    // Abstract operations for the ReadableStream.\n    function AcquireReadableStreamDefaultReader(stream, forAuthorCode) {\n        if (forAuthorCode === void 0) { forAuthorCode = false; }\n        var reader = new ReadableStreamDefaultReader(stream);\n        reader._forAuthorCode = forAuthorCode;\n        return reader;\n    }\n    // ReadableStream API exposed for controllers.\n    function ReadableStreamAddReadRequest(stream) {\n        var promise = newPromise(function (resolve, reject) {\n            var readRequest = {\n                _resolve: resolve,\n                _reject: reject\n            };\n            stream._reader._readRequests.push(readRequest);\n        });\n        return promise;\n    }\n    function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n        var reader = stream._reader;\n        var readRequest = reader._readRequests.shift();\n        readRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n    }\n    function ReadableStreamGetNumReadRequests(stream) {\n        return stream._reader._readRequests.length;\n    }\n    function ReadableStreamHasDefaultReader(stream) {\n        var reader = stream._reader;\n        if (reader === undefined) {\n            return false;\n        }\n        if (!IsReadableStreamDefaultReader(reader)) {\n            return false;\n        }\n        return true;\n    }\n    var ReadableStreamDefaultReader = /** @class */ (function () {\n        function ReadableStreamDefaultReader(stream) {\n            if (IsReadableStream(stream) === false) {\n                throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n            }\n            if (IsReadableStreamLocked(stream) === true) {\n                throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n            }\n            ReadableStreamReaderGenericInitialize(this, stream);\n            this._readRequests = new SimpleQueue();\n        }\n        Object.defineProperty(ReadableStreamDefaultReader.prototype, \"closed\", {\n            get: function () {\n                if (!IsReadableStreamDefaultReader(this)) {\n                    return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n                }\n                return this._closedPromise;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableStreamDefaultReader.prototype.cancel = function (reason) {\n            if (!IsReadableStreamDefaultReader(this)) {\n                return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n            }\n            if (this._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('cancel'));\n            }\n            return ReadableStreamReaderGenericCancel(this, reason);\n        };\n        ReadableStreamDefaultReader.prototype.read = function () {\n            if (!IsReadableStreamDefaultReader(this)) {\n                return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n            }\n            if (this._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('read from'));\n            }\n            return ReadableStreamDefaultReaderRead(this);\n        };\n        ReadableStreamDefaultReader.prototype.releaseLock = function () {\n            if (!IsReadableStreamDefaultReader(this)) {\n                throw defaultReaderBrandCheckException('releaseLock');\n            }\n            if (this._ownerReadableStream === undefined) {\n                return;\n            }\n            if (this._readRequests.length > 0) {\n                throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n            }\n            ReadableStreamReaderGenericRelease(this);\n        };\n        return ReadableStreamDefaultReader;\n    }());\n    // Abstract operations for the readers.\n    function IsReadableStreamDefaultReader(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n            return false;\n        }\n        return true;\n    }\n    function ReadableStreamDefaultReaderRead(reader) {\n        var stream = reader._ownerReadableStream;\n        stream._disturbed = true;\n        if (stream._state === 'closed') {\n            return promiseResolvedWith(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n        }\n        if (stream._state === 'errored') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        return stream._readableStreamController[PullSteps]();\n    }\n    // Helper functions for the ReadableStreamDefaultReader.\n    function defaultReaderBrandCheckException(name) {\n        return new TypeError(\"ReadableStreamDefaultReader.prototype.\" + name + \" can only be used on a ReadableStreamDefaultReader\");\n    }\n\n    /// <reference lib=\"es2018.asynciterable\" />\n    var _a;\n    var AsyncIteratorPrototype;\n    if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n        // We're running inside a ES2018+ environment, but we're compiling to an older syntax.\n        // We cannot access %AsyncIteratorPrototype% without non-ES2018 syntax, but we can re-create it.\n        AsyncIteratorPrototype = (_a = {},\n            // 25.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( )\n            // https://tc39.github.io/ecma262/#sec-asynciteratorprototype-asynciterator\n            _a[SymbolPolyfill.asyncIterator] = function () {\n                return this;\n            },\n            _a);\n        Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n    }\n\n    /// <reference lib=\"es2018.asynciterable\" />\n    var ReadableStreamAsyncIteratorPrototype = {\n        next: function () {\n            if (IsReadableStreamAsyncIterator(this) === false) {\n                return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n            }\n            var reader = this._asyncIteratorReader;\n            if (reader._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('iterate'));\n            }\n            return transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n                var done = result.done;\n                if (done) {\n                    ReadableStreamReaderGenericRelease(reader);\n                }\n                var value = result.value;\n                return ReadableStreamCreateReadResult(value, done, true);\n            });\n        },\n        return: function (value) {\n            if (IsReadableStreamAsyncIterator(this) === false) {\n                return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n            }\n            var reader = this._asyncIteratorReader;\n            if (reader._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('finish iterating'));\n            }\n            if (reader._readRequests.length > 0) {\n                return promiseRejectedWith(new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'));\n            }\n            if (this._preventCancel === false) {\n                var result = ReadableStreamReaderGenericCancel(reader, value);\n                ReadableStreamReaderGenericRelease(reader);\n                return transformPromiseWith(result, function () { return ReadableStreamCreateReadResult(value, true, true); });\n            }\n            ReadableStreamReaderGenericRelease(reader);\n            return promiseResolvedWith(ReadableStreamCreateReadResult(value, true, true));\n        }\n    };\n    if (AsyncIteratorPrototype !== undefined) {\n        Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n    }\n    Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'next', { enumerable: false });\n    Object.defineProperty(ReadableStreamAsyncIteratorPrototype, 'return', { enumerable: false });\n    // Abstract operations for the ReadableStream.\n    function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n        if (preventCancel === void 0) { preventCancel = false; }\n        var reader = AcquireReadableStreamDefaultReader(stream);\n        var iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n        iterator._asyncIteratorReader = reader;\n        iterator._preventCancel = Boolean(preventCancel);\n        return iterator;\n    }\n    function IsReadableStreamAsyncIterator(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorReader')) {\n            return false;\n        }\n        return true;\n    }\n    // Helper functions for the ReadableStream.\n    function streamAsyncIteratorBrandCheckException(name) {\n        return new TypeError(\"ReadableStreamAsyncIterator.\" + name + \" can only be used on a ReadableSteamAsyncIterator\");\n    }\n\n    function DequeueValue(container) {\n        var pair = container._queue.shift();\n        container._queueTotalSize -= pair.size;\n        if (container._queueTotalSize < 0) {\n            container._queueTotalSize = 0;\n        }\n        return pair.value;\n    }\n    function EnqueueValueWithSize(container, value, size) {\n        size = Number(size);\n        if (!IsFiniteNonNegativeNumber(size)) {\n            throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n        }\n        container._queue.push({ value: value, size: size });\n        container._queueTotalSize += size;\n    }\n    function PeekQueueValue(container) {\n        var pair = container._queue.peek();\n        return pair.value;\n    }\n    function ResetQueue(container) {\n        container._queue = new SimpleQueue();\n        container._queueTotalSize = 0;\n    }\n\n    var AbortSteps = SymbolPolyfill('[[AbortSteps]]');\n    var ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\n    var WritableStream = /** @class */ (function () {\n        function WritableStream(underlyingSink, strategy) {\n            if (underlyingSink === void 0) { underlyingSink = {}; }\n            if (strategy === void 0) { strategy = {}; }\n            InitializeWritableStream(this);\n            var size = strategy.size;\n            var highWaterMark = strategy.highWaterMark;\n            var type = underlyingSink.type;\n            if (type !== undefined) {\n                throw new RangeError('Invalid type is specified');\n            }\n            var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n            if (highWaterMark === undefined) {\n                highWaterMark = 1;\n            }\n            highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n            SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n        }\n        Object.defineProperty(WritableStream.prototype, \"locked\", {\n            get: function () {\n                if (IsWritableStream(this) === false) {\n                    throw streamBrandCheckException('locked');\n                }\n                return IsWritableStreamLocked(this);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        WritableStream.prototype.abort = function (reason) {\n            if (IsWritableStream(this) === false) {\n                return promiseRejectedWith(streamBrandCheckException('abort'));\n            }\n            if (IsWritableStreamLocked(this) === true) {\n                return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n            }\n            return WritableStreamAbort(this, reason);\n        };\n        WritableStream.prototype.close = function () {\n            if (IsWritableStream(this) === false) {\n                return promiseRejectedWith(streamBrandCheckException('close'));\n            }\n            if (IsWritableStreamLocked(this) === true) {\n                return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n            }\n            if (WritableStreamCloseQueuedOrInFlight(this) === true) {\n                return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n            }\n            return WritableStreamClose(this);\n        };\n        WritableStream.prototype.getWriter = function () {\n            if (IsWritableStream(this) === false) {\n                throw streamBrandCheckException('getWriter');\n            }\n            return AcquireWritableStreamDefaultWriter(this);\n        };\n        return WritableStream;\n    }());\n    // Abstract operations for the WritableStream.\n    function AcquireWritableStreamDefaultWriter(stream) {\n        return new WritableStreamDefaultWriter(stream);\n    }\n    // Throws if and only if startAlgorithm throws.\n    function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n        if (highWaterMark === void 0) { highWaterMark = 1; }\n        if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; }\n        var stream = Object.create(WritableStream.prototype);\n        InitializeWritableStream(stream);\n        var controller = Object.create(WritableStreamDefaultController.prototype);\n        SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n        return stream;\n    }\n    function InitializeWritableStream(stream) {\n        stream._state = 'writable';\n        // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n        // 'erroring' or 'errored'. May be set to an undefined value.\n        stream._storedError = undefined;\n        stream._writer = undefined;\n        // Initialize to undefined first because the constructor of the controller checks this\n        // variable to validate the caller.\n        stream._writableStreamController = undefined;\n        // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n        // producer without waiting for the queued writes to finish.\n        stream._writeRequests = new SimpleQueue();\n        // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n        // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n        stream._inFlightWriteRequest = undefined;\n        // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n        // has been detached.\n        stream._closeRequest = undefined;\n        // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n        // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n        stream._inFlightCloseRequest = undefined;\n        // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n        stream._pendingAbortRequest = undefined;\n        // The backpressure signal set by the controller.\n        stream._backpressure = false;\n    }\n    function IsWritableStream(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n            return false;\n        }\n        return true;\n    }\n    function IsWritableStreamLocked(stream) {\n        if (stream._writer === undefined) {\n            return false;\n        }\n        return true;\n    }\n    function WritableStreamAbort(stream, reason) {\n        var state = stream._state;\n        if (state === 'closed' || state === 'errored') {\n            return promiseResolvedWith(undefined);\n        }\n        if (stream._pendingAbortRequest !== undefined) {\n            return stream._pendingAbortRequest._promise;\n        }\n        var wasAlreadyErroring = false;\n        if (state === 'erroring') {\n            wasAlreadyErroring = true;\n            // reason will not be used, so don't keep a reference to it.\n            reason = undefined;\n        }\n        var promise = newPromise(function (resolve, reject) {\n            stream._pendingAbortRequest = {\n                _promise: undefined,\n                _resolve: resolve,\n                _reject: reject,\n                _reason: reason,\n                _wasAlreadyErroring: wasAlreadyErroring\n            };\n        });\n        stream._pendingAbortRequest._promise = promise;\n        if (wasAlreadyErroring === false) {\n            WritableStreamStartErroring(stream, reason);\n        }\n        return promise;\n    }\n    function WritableStreamClose(stream) {\n        var state = stream._state;\n        if (state === 'closed' || state === 'errored') {\n            return promiseRejectedWith(new TypeError(\"The stream (in \" + state + \" state) is not in the writable state and cannot be closed\"));\n        }\n        var promise = newPromise(function (resolve, reject) {\n            var closeRequest = {\n                _resolve: resolve,\n                _reject: reject\n            };\n            stream._closeRequest = closeRequest;\n        });\n        var writer = stream._writer;\n        if (writer !== undefined && stream._backpressure === true && state === 'writable') {\n            defaultWriterReadyPromiseResolve(writer);\n        }\n        WritableStreamDefaultControllerClose(stream._writableStreamController);\n        return promise;\n    }\n    // WritableStream API exposed for controllers.\n    function WritableStreamAddWriteRequest(stream) {\n        var promise = newPromise(function (resolve, reject) {\n            var writeRequest = {\n                _resolve: resolve,\n                _reject: reject\n            };\n            stream._writeRequests.push(writeRequest);\n        });\n        return promise;\n    }\n    function WritableStreamDealWithRejection(stream, error) {\n        var state = stream._state;\n        if (state === 'writable') {\n            WritableStreamStartErroring(stream, error);\n            return;\n        }\n        WritableStreamFinishErroring(stream);\n    }\n    function WritableStreamStartErroring(stream, reason) {\n        var controller = stream._writableStreamController;\n        stream._state = 'erroring';\n        stream._storedError = reason;\n        var writer = stream._writer;\n        if (writer !== undefined) {\n            WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n        }\n        if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n            WritableStreamFinishErroring(stream);\n        }\n    }\n    function WritableStreamFinishErroring(stream) {\n        stream._state = 'errored';\n        stream._writableStreamController[ErrorSteps]();\n        var storedError = stream._storedError;\n        stream._writeRequests.forEach(function (writeRequest) {\n            writeRequest._reject(storedError);\n        });\n        stream._writeRequests = new SimpleQueue();\n        if (stream._pendingAbortRequest === undefined) {\n            WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n            return;\n        }\n        var abortRequest = stream._pendingAbortRequest;\n        stream._pendingAbortRequest = undefined;\n        if (abortRequest._wasAlreadyErroring === true) {\n            abortRequest._reject(storedError);\n            WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n            return;\n        }\n        var promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n        uponPromise(promise, function () {\n            abortRequest._resolve();\n            WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n        }, function (reason) {\n            abortRequest._reject(reason);\n            WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n        });\n    }\n    function WritableStreamFinishInFlightWrite(stream) {\n        stream._inFlightWriteRequest._resolve(undefined);\n        stream._inFlightWriteRequest = undefined;\n    }\n    function WritableStreamFinishInFlightWriteWithError(stream, error) {\n        stream._inFlightWriteRequest._reject(error);\n        stream._inFlightWriteRequest = undefined;\n        WritableStreamDealWithRejection(stream, error);\n    }\n    function WritableStreamFinishInFlightClose(stream) {\n        stream._inFlightCloseRequest._resolve(undefined);\n        stream._inFlightCloseRequest = undefined;\n        var state = stream._state;\n        if (state === 'erroring') {\n            // The error was too late to do anything, so it is ignored.\n            stream._storedError = undefined;\n            if (stream._pendingAbortRequest !== undefined) {\n                stream._pendingAbortRequest._resolve();\n                stream._pendingAbortRequest = undefined;\n            }\n        }\n        stream._state = 'closed';\n        var writer = stream._writer;\n        if (writer !== undefined) {\n            defaultWriterClosedPromiseResolve(writer);\n        }\n    }\n    function WritableStreamFinishInFlightCloseWithError(stream, error) {\n        stream._inFlightCloseRequest._reject(error);\n        stream._inFlightCloseRequest = undefined;\n        // Never execute sink abort() after sink close().\n        if (stream._pendingAbortRequest !== undefined) {\n            stream._pendingAbortRequest._reject(error);\n            stream._pendingAbortRequest = undefined;\n        }\n        WritableStreamDealWithRejection(stream, error);\n    }\n    // TODO(ricea): Fix alphabetical order.\n    function WritableStreamCloseQueuedOrInFlight(stream) {\n        if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n            return false;\n        }\n        return true;\n    }\n    function WritableStreamHasOperationMarkedInFlight(stream) {\n        if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n            return false;\n        }\n        return true;\n    }\n    function WritableStreamMarkCloseRequestInFlight(stream) {\n        stream._inFlightCloseRequest = stream._closeRequest;\n        stream._closeRequest = undefined;\n    }\n    function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n        stream._inFlightWriteRequest = stream._writeRequests.shift();\n    }\n    function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n        if (stream._closeRequest !== undefined) {\n            stream._closeRequest._reject(stream._storedError);\n            stream._closeRequest = undefined;\n        }\n        var writer = stream._writer;\n        if (writer !== undefined) {\n            defaultWriterClosedPromiseReject(writer, stream._storedError);\n        }\n    }\n    function WritableStreamUpdateBackpressure(stream, backpressure) {\n        var writer = stream._writer;\n        if (writer !== undefined && backpressure !== stream._backpressure) {\n            if (backpressure === true) {\n                defaultWriterReadyPromiseReset(writer);\n            }\n            else {\n                defaultWriterReadyPromiseResolve(writer);\n            }\n        }\n        stream._backpressure = backpressure;\n    }\n    var WritableStreamDefaultWriter = /** @class */ (function () {\n        function WritableStreamDefaultWriter(stream) {\n            if (IsWritableStream(stream) === false) {\n                throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n            }\n            if (IsWritableStreamLocked(stream) === true) {\n                throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n            }\n            this._ownerWritableStream = stream;\n            stream._writer = this;\n            var state = stream._state;\n            if (state === 'writable') {\n                if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n                    defaultWriterReadyPromiseInitialize(this);\n                }\n                else {\n                    defaultWriterReadyPromiseInitializeAsResolved(this);\n                }\n                defaultWriterClosedPromiseInitialize(this);\n            }\n            else if (state === 'erroring') {\n                defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n                defaultWriterClosedPromiseInitialize(this);\n            }\n            else if (state === 'closed') {\n                defaultWriterReadyPromiseInitializeAsResolved(this);\n                defaultWriterClosedPromiseInitializeAsResolved(this);\n            }\n            else {\n                var storedError = stream._storedError;\n                defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n                defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n            }\n        }\n        Object.defineProperty(WritableStreamDefaultWriter.prototype, \"closed\", {\n            get: function () {\n                if (IsWritableStreamDefaultWriter(this) === false) {\n                    return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n                }\n                return this._closedPromise;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(WritableStreamDefaultWriter.prototype, \"desiredSize\", {\n            get: function () {\n                if (IsWritableStreamDefaultWriter(this) === false) {\n                    throw defaultWriterBrandCheckException('desiredSize');\n                }\n                if (this._ownerWritableStream === undefined) {\n                    throw defaultWriterLockException('desiredSize');\n                }\n                return WritableStreamDefaultWriterGetDesiredSize(this);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(WritableStreamDefaultWriter.prototype, \"ready\", {\n            get: function () {\n                if (IsWritableStreamDefaultWriter(this) === false) {\n                    return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n                }\n                return this._readyPromise;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        WritableStreamDefaultWriter.prototype.abort = function (reason) {\n            if (IsWritableStreamDefaultWriter(this) === false) {\n                return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n            }\n            if (this._ownerWritableStream === undefined) {\n                return promiseRejectedWith(defaultWriterLockException('abort'));\n            }\n            return WritableStreamDefaultWriterAbort(this, reason);\n        };\n        WritableStreamDefaultWriter.prototype.close = function () {\n            if (IsWritableStreamDefaultWriter(this) === false) {\n                return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n            }\n            var stream = this._ownerWritableStream;\n            if (stream === undefined) {\n                return promiseRejectedWith(defaultWriterLockException('close'));\n            }\n            if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n                return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n            }\n            return WritableStreamDefaultWriterClose(this);\n        };\n        WritableStreamDefaultWriter.prototype.releaseLock = function () {\n            if (IsWritableStreamDefaultWriter(this) === false) {\n                throw defaultWriterBrandCheckException('releaseLock');\n            }\n            var stream = this._ownerWritableStream;\n            if (stream === undefined) {\n                return;\n            }\n            WritableStreamDefaultWriterRelease(this);\n        };\n        WritableStreamDefaultWriter.prototype.write = function (chunk) {\n            if (IsWritableStreamDefaultWriter(this) === false) {\n                return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n            }\n            if (this._ownerWritableStream === undefined) {\n                return promiseRejectedWith(defaultWriterLockException('write to'));\n            }\n            return WritableStreamDefaultWriterWrite(this, chunk);\n        };\n        return WritableStreamDefaultWriter;\n    }());\n    // Abstract operations for the WritableStreamDefaultWriter.\n    function IsWritableStreamDefaultWriter(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n            return false;\n        }\n        return true;\n    }\n    // A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n    function WritableStreamDefaultWriterAbort(writer, reason) {\n        var stream = writer._ownerWritableStream;\n        return WritableStreamAbort(stream, reason);\n    }\n    function WritableStreamDefaultWriterClose(writer) {\n        var stream = writer._ownerWritableStream;\n        return WritableStreamClose(stream);\n    }\n    function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n        var stream = writer._ownerWritableStream;\n        var state = stream._state;\n        if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n            return promiseResolvedWith(undefined);\n        }\n        if (state === 'errored') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        return WritableStreamDefaultWriterClose(writer);\n    }\n    function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n        if (writer._closedPromiseState === 'pending') {\n            defaultWriterClosedPromiseReject(writer, error);\n        }\n        else {\n            defaultWriterClosedPromiseResetToRejected(writer, error);\n        }\n    }\n    function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n        if (writer._readyPromiseState === 'pending') {\n            defaultWriterReadyPromiseReject(writer, error);\n        }\n        else {\n            defaultWriterReadyPromiseResetToRejected(writer, error);\n        }\n    }\n    function WritableStreamDefaultWriterGetDesiredSize(writer) {\n        var stream = writer._ownerWritableStream;\n        var state = stream._state;\n        if (state === 'errored' || state === 'erroring') {\n            return null;\n        }\n        if (state === 'closed') {\n            return 0;\n        }\n        return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n    }\n    function WritableStreamDefaultWriterRelease(writer) {\n        var stream = writer._ownerWritableStream;\n        var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n        WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n        // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n        // rejected until afterwards. This means that simply testing state will not work.\n        WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n        stream._writer = undefined;\n        writer._ownerWritableStream = undefined;\n    }\n    function WritableStreamDefaultWriterWrite(writer, chunk) {\n        var stream = writer._ownerWritableStream;\n        var controller = stream._writableStreamController;\n        var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n        if (stream !== writer._ownerWritableStream) {\n            return promiseRejectedWith(defaultWriterLockException('write to'));\n        }\n        var state = stream._state;\n        if (state === 'errored') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n            return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n        }\n        if (state === 'erroring') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        var promise = WritableStreamAddWriteRequest(stream);\n        WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n        return promise;\n    }\n    var WritableStreamDefaultController = /** @class */ (function () {\n        /** @internal */\n        function WritableStreamDefaultController() {\n            throw new TypeError('WritableStreamDefaultController cannot be constructed explicitly');\n        }\n        WritableStreamDefaultController.prototype.error = function (e) {\n            if (IsWritableStreamDefaultController(this) === false) {\n                throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n            }\n            var state = this._controlledWritableStream._state;\n            if (state !== 'writable') {\n                // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n                // just treat it as a no-op.\n                return;\n            }\n            WritableStreamDefaultControllerError(this, e);\n        };\n        /** @internal */\n        WritableStreamDefaultController.prototype[AbortSteps] = function (reason) {\n            var result = this._abortAlgorithm(reason);\n            WritableStreamDefaultControllerClearAlgorithms(this);\n            return result;\n        };\n        /** @internal */\n        WritableStreamDefaultController.prototype[ErrorSteps] = function () {\n            ResetQueue(this);\n        };\n        return WritableStreamDefaultController;\n    }());\n    // Abstract operations implementing interface required by the WritableStream.\n    function IsWritableStreamDefaultController(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n            return false;\n        }\n        return true;\n    }\n    function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n        controller._controlledWritableStream = stream;\n        stream._writableStreamController = controller;\n        // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n        controller._queue = undefined;\n        controller._queueTotalSize = undefined;\n        ResetQueue(controller);\n        controller._started = false;\n        controller._strategySizeAlgorithm = sizeAlgorithm;\n        controller._strategyHWM = highWaterMark;\n        controller._writeAlgorithm = writeAlgorithm;\n        controller._closeAlgorithm = closeAlgorithm;\n        controller._abortAlgorithm = abortAlgorithm;\n        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n        WritableStreamUpdateBackpressure(stream, backpressure);\n        var startResult = startAlgorithm();\n        var startPromise = promiseResolvedWith(startResult);\n        uponPromise(startPromise, function () {\n            controller._started = true;\n            WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n        }, function (r) {\n            controller._started = true;\n            WritableStreamDealWithRejection(stream, r);\n        });\n    }\n    function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n        var controller = Object.create(WritableStreamDefaultController.prototype);\n        function startAlgorithm() {\n            return InvokeOrNoop(underlyingSink, 'start', [controller]);\n        }\n        var writeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'write', 1, [controller]);\n        var closeAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'close', 0, []);\n        var abortAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSink, 'abort', 1, []);\n        SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n    }\n    // ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\n    function WritableStreamDefaultControllerClearAlgorithms(controller) {\n        controller._writeAlgorithm = undefined;\n        controller._closeAlgorithm = undefined;\n        controller._abortAlgorithm = undefined;\n        controller._strategySizeAlgorithm = undefined;\n    }\n    function WritableStreamDefaultControllerClose(controller) {\n        EnqueueValueWithSize(controller, 'close', 0);\n        WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n    }\n    function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n        try {\n            return controller._strategySizeAlgorithm(chunk);\n        }\n        catch (chunkSizeE) {\n            WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n            return 1;\n        }\n    }\n    function WritableStreamDefaultControllerGetDesiredSize(controller) {\n        return controller._strategyHWM - controller._queueTotalSize;\n    }\n    function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n        var writeRecord = { chunk: chunk };\n        try {\n            EnqueueValueWithSize(controller, writeRecord, chunkSize);\n        }\n        catch (enqueueE) {\n            WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n            return;\n        }\n        var stream = controller._controlledWritableStream;\n        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n            var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n            WritableStreamUpdateBackpressure(stream, backpressure);\n        }\n        WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n    }\n    // Abstract operations for the WritableStreamDefaultController.\n    function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n        var stream = controller._controlledWritableStream;\n        if (controller._started === false) {\n            return;\n        }\n        if (stream._inFlightWriteRequest !== undefined) {\n            return;\n        }\n        var state = stream._state;\n        if (state === 'erroring') {\n            WritableStreamFinishErroring(stream);\n            return;\n        }\n        if (controller._queue.length === 0) {\n            return;\n        }\n        var writeRecord = PeekQueueValue(controller);\n        if (writeRecord === 'close') {\n            WritableStreamDefaultControllerProcessClose(controller);\n        }\n        else {\n            WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n        }\n    }\n    function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n        if (controller._controlledWritableStream._state === 'writable') {\n            WritableStreamDefaultControllerError(controller, error);\n        }\n    }\n    function WritableStreamDefaultControllerProcessClose(controller) {\n        var stream = controller._controlledWritableStream;\n        WritableStreamMarkCloseRequestInFlight(stream);\n        DequeueValue(controller);\n        var sinkClosePromise = controller._closeAlgorithm();\n        WritableStreamDefaultControllerClearAlgorithms(controller);\n        uponPromise(sinkClosePromise, function () {\n            WritableStreamFinishInFlightClose(stream);\n        }, function (reason) {\n            WritableStreamFinishInFlightCloseWithError(stream, reason);\n        });\n    }\n    function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n        var stream = controller._controlledWritableStream;\n        WritableStreamMarkFirstWriteRequestInFlight(stream);\n        var sinkWritePromise = controller._writeAlgorithm(chunk);\n        uponPromise(sinkWritePromise, function () {\n            WritableStreamFinishInFlightWrite(stream);\n            var state = stream._state;\n            DequeueValue(controller);\n            if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n                var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n                WritableStreamUpdateBackpressure(stream, backpressure);\n            }\n            WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n        }, function (reason) {\n            if (stream._state === 'writable') {\n                WritableStreamDefaultControllerClearAlgorithms(controller);\n            }\n            WritableStreamFinishInFlightWriteWithError(stream, reason);\n        });\n    }\n    function WritableStreamDefaultControllerGetBackpressure(controller) {\n        var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n        return desiredSize <= 0;\n    }\n    // A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n    function WritableStreamDefaultControllerError(controller, error) {\n        var stream = controller._controlledWritableStream;\n        WritableStreamDefaultControllerClearAlgorithms(controller);\n        WritableStreamStartErroring(stream, error);\n    }\n    // Helper functions for the WritableStream.\n    function streamBrandCheckException(name) {\n        return new TypeError(\"WritableStream.prototype.\" + name + \" can only be used on a WritableStream\");\n    }\n    // Helper functions for the WritableStreamDefaultWriter.\n    function defaultWriterBrandCheckException(name) {\n        return new TypeError(\"WritableStreamDefaultWriter.prototype.\" + name + \" can only be used on a WritableStreamDefaultWriter\");\n    }\n    function defaultWriterLockException(name) {\n        return new TypeError('Cannot ' + name + ' a stream using a released writer');\n    }\n    function defaultWriterClosedPromiseInitialize(writer) {\n        writer._closedPromise = newPromise(function (resolve, reject) {\n            writer._closedPromise_resolve = resolve;\n            writer._closedPromise_reject = reject;\n            writer._closedPromiseState = 'pending';\n        });\n    }\n    function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n        defaultWriterClosedPromiseInitialize(writer);\n        defaultWriterClosedPromiseReject(writer, reason);\n    }\n    function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n        defaultWriterClosedPromiseInitialize(writer);\n        defaultWriterClosedPromiseResolve(writer);\n    }\n    function defaultWriterClosedPromiseReject(writer, reason) {\n        setPromiseIsHandledToTrue(writer._closedPromise);\n        writer._closedPromise_reject(reason);\n        writer._closedPromise_resolve = undefined;\n        writer._closedPromise_reject = undefined;\n        writer._closedPromiseState = 'rejected';\n    }\n    function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n        defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n    }\n    function defaultWriterClosedPromiseResolve(writer) {\n        writer._closedPromise_resolve(undefined);\n        writer._closedPromise_resolve = undefined;\n        writer._closedPromise_reject = undefined;\n        writer._closedPromiseState = 'resolved';\n    }\n    function defaultWriterReadyPromiseInitialize(writer) {\n        writer._readyPromise = newPromise(function (resolve, reject) {\n            writer._readyPromise_resolve = resolve;\n            writer._readyPromise_reject = reject;\n        });\n        writer._readyPromiseState = 'pending';\n    }\n    function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n        defaultWriterReadyPromiseInitialize(writer);\n        defaultWriterReadyPromiseReject(writer, reason);\n    }\n    function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n        defaultWriterReadyPromiseInitialize(writer);\n        defaultWriterReadyPromiseResolve(writer);\n    }\n    function defaultWriterReadyPromiseReject(writer, reason) {\n        setPromiseIsHandledToTrue(writer._readyPromise);\n        writer._readyPromise_reject(reason);\n        writer._readyPromise_resolve = undefined;\n        writer._readyPromise_reject = undefined;\n        writer._readyPromiseState = 'rejected';\n    }\n    function defaultWriterReadyPromiseReset(writer) {\n        defaultWriterReadyPromiseInitialize(writer);\n    }\n    function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n        defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n    }\n    function defaultWriterReadyPromiseResolve(writer) {\n        writer._readyPromise_resolve(undefined);\n        writer._readyPromise_resolve = undefined;\n        writer._readyPromise_reject = undefined;\n        writer._readyPromiseState = 'fulfilled';\n    }\n\n    function isAbortSignal(value) {\n        if (typeof value !== 'object' || value === null) {\n            return false;\n        }\n        try {\n            return typeof value.aborted === 'boolean';\n        }\n        catch (_a) {\n            // AbortSignal.prototype.aborted throws if its brand check fails\n            return false;\n        }\n    }\n\n    /// <reference lib=\"dom\" />\n    var NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n\n    /// <reference types=\"node\" />\n    function isDOMExceptionConstructor(ctor) {\n        if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n            return false;\n        }\n        try {\n            new ctor();\n            return true;\n        }\n        catch (_a) {\n            return false;\n        }\n    }\n    function createDOMExceptionPolyfill() {\n        var ctor = function DOMException(message, name) {\n            this.message = message || '';\n            this.name = name || 'Error';\n            if (Error.captureStackTrace) {\n                Error.captureStackTrace(this, this.constructor);\n            }\n        };\n        ctor.prototype = Object.create(Error.prototype);\n        Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n        return ctor;\n    }\n    var DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n\n    function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n        var reader = AcquireReadableStreamDefaultReader(source);\n        var writer = AcquireWritableStreamDefaultWriter(dest);\n        source._disturbed = true;\n        var shuttingDown = false;\n        // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n        var currentWrite = promiseResolvedWith(undefined);\n        return newPromise(function (resolve, reject) {\n            var abortAlgorithm;\n            if (signal !== undefined) {\n                abortAlgorithm = function () {\n                    var error = new DOMException$1('Aborted', 'AbortError');\n                    var actions = [];\n                    if (preventAbort === false) {\n                        actions.push(function () {\n                            if (dest._state === 'writable') {\n                                return WritableStreamAbort(dest, error);\n                            }\n                            return promiseResolvedWith(undefined);\n                        });\n                    }\n                    if (preventCancel === false) {\n                        actions.push(function () {\n                            if (source._state === 'readable') {\n                                return ReadableStreamCancel(source, error);\n                            }\n                            return promiseResolvedWith(undefined);\n                        });\n                    }\n                    shutdownWithAction(function () { return Promise.all(actions.map(function (action) { return action(); })); }, true, error);\n                };\n                if (signal.aborted === true) {\n                    abortAlgorithm();\n                    return;\n                }\n                signal.addEventListener('abort', abortAlgorithm);\n            }\n            // Using reader and writer, read all chunks from this and write them to dest\n            // - Backpressure must be enforced\n            // - Shutdown must stop all activity\n            function pipeLoop() {\n                return newPromise(function (resolveLoop, rejectLoop) {\n                    function next(done) {\n                        if (done) {\n                            resolveLoop();\n                        }\n                        else {\n                            // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n                            // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n                            PerformPromiseThen(pipeStep(), next, rejectLoop);\n                        }\n                    }\n                    next(false);\n                });\n            }\n            function pipeStep() {\n                if (shuttingDown === true) {\n                    return promiseResolvedWith(true);\n                }\n                return PerformPromiseThen(writer._readyPromise, function () {\n                    return PerformPromiseThen(ReadableStreamDefaultReaderRead(reader), function (result) {\n                        if (result.done === true) {\n                            return true;\n                        }\n                        currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, result.value), undefined, noop);\n                        return false;\n                    });\n                });\n            }\n            // Errors must be propagated forward\n            isOrBecomesErrored(source, reader._closedPromise, function (storedError) {\n                if (preventAbort === false) {\n                    shutdownWithAction(function () { return WritableStreamAbort(dest, storedError); }, true, storedError);\n                }\n                else {\n                    shutdown(true, storedError);\n                }\n            });\n            // Errors must be propagated backward\n            isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n                if (preventCancel === false) {\n                    shutdownWithAction(function () { return ReadableStreamCancel(source, storedError); }, true, storedError);\n                }\n                else {\n                    shutdown(true, storedError);\n                }\n            });\n            // Closing must be propagated forward\n            isOrBecomesClosed(source, reader._closedPromise, function () {\n                if (preventClose === false) {\n                    shutdownWithAction(function () { return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); });\n                }\n                else {\n                    shutdown();\n                }\n            });\n            // Closing must be propagated backward\n            if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n                var destClosed_1 = new TypeError('the destination writable stream closed before all data could be piped to it');\n                if (preventCancel === false) {\n                    shutdownWithAction(function () { return ReadableStreamCancel(source, destClosed_1); }, true, destClosed_1);\n                }\n                else {\n                    shutdown(true, destClosed_1);\n                }\n            }\n            setPromiseIsHandledToTrue(pipeLoop());\n            function waitForWritesToFinish() {\n                // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n                // for that too.\n                var oldCurrentWrite = currentWrite;\n                return PerformPromiseThen(currentWrite, function () { return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; });\n            }\n            function isOrBecomesErrored(stream, promise, action) {\n                if (stream._state === 'errored') {\n                    action(stream._storedError);\n                }\n                else {\n                    uponRejection(promise, action);\n                }\n            }\n            function isOrBecomesClosed(stream, promise, action) {\n                if (stream._state === 'closed') {\n                    action();\n                }\n                else {\n                    uponFulfillment(promise, action);\n                }\n            }\n            function shutdownWithAction(action, originalIsError, originalError) {\n                if (shuttingDown === true) {\n                    return;\n                }\n                shuttingDown = true;\n                if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n                    uponFulfillment(waitForWritesToFinish(), doTheRest);\n                }\n                else {\n                    doTheRest();\n                }\n                function doTheRest() {\n                    uponPromise(action(), function () { return finalize(originalIsError, originalError); }, function (newError) { return finalize(true, newError); });\n                }\n            }\n            function shutdown(isError, error) {\n                if (shuttingDown === true) {\n                    return;\n                }\n                shuttingDown = true;\n                if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n                    uponFulfillment(waitForWritesToFinish(), function () { return finalize(isError, error); });\n                }\n                else {\n                    finalize(isError, error);\n                }\n            }\n            function finalize(isError, error) {\n                WritableStreamDefaultWriterRelease(writer);\n                ReadableStreamReaderGenericRelease(reader);\n                if (signal !== undefined) {\n                    signal.removeEventListener('abort', abortAlgorithm);\n                }\n                if (isError) {\n                    reject(error);\n                }\n                else {\n                    resolve(undefined);\n                }\n            }\n        });\n    }\n\n    var ReadableStreamDefaultController = /** @class */ (function () {\n        /** @internal */\n        function ReadableStreamDefaultController() {\n            throw new TypeError();\n        }\n        Object.defineProperty(ReadableStreamDefaultController.prototype, \"desiredSize\", {\n            get: function () {\n                if (IsReadableStreamDefaultController(this) === false) {\n                    throw defaultControllerBrandCheckException('desiredSize');\n                }\n                return ReadableStreamDefaultControllerGetDesiredSize(this);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableStreamDefaultController.prototype.close = function () {\n            if (IsReadableStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException('close');\n            }\n            if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n                throw new TypeError('The stream is not in a state that permits close');\n            }\n            ReadableStreamDefaultControllerClose(this);\n        };\n        ReadableStreamDefaultController.prototype.enqueue = function (chunk) {\n            if (IsReadableStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException('enqueue');\n            }\n            if (ReadableStreamDefaultControllerCanCloseOrEnqueue(this) === false) {\n                throw new TypeError('The stream is not in a state that permits enqueue');\n            }\n            return ReadableStreamDefaultControllerEnqueue(this, chunk);\n        };\n        ReadableStreamDefaultController.prototype.error = function (e) {\n            if (IsReadableStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException('error');\n            }\n            ReadableStreamDefaultControllerError(this, e);\n        };\n        /** @internal */\n        ReadableStreamDefaultController.prototype[CancelSteps] = function (reason) {\n            ResetQueue(this);\n            var result = this._cancelAlgorithm(reason);\n            ReadableStreamDefaultControllerClearAlgorithms(this);\n            return result;\n        };\n        /** @internal */\n        ReadableStreamDefaultController.prototype[PullSteps] = function () {\n            var stream = this._controlledReadableStream;\n            if (this._queue.length > 0) {\n                var chunk = DequeueValue(this);\n                if (this._closeRequested === true && this._queue.length === 0) {\n                    ReadableStreamDefaultControllerClearAlgorithms(this);\n                    ReadableStreamClose(stream);\n                }\n                else {\n                    ReadableStreamDefaultControllerCallPullIfNeeded(this);\n                }\n                return promiseResolvedWith(ReadableStreamCreateReadResult(chunk, false, stream._reader._forAuthorCode));\n            }\n            var pendingPromise = ReadableStreamAddReadRequest(stream);\n            ReadableStreamDefaultControllerCallPullIfNeeded(this);\n            return pendingPromise;\n        };\n        return ReadableStreamDefaultController;\n    }());\n    // Abstract operations for the ReadableStreamDefaultController.\n    function IsReadableStreamDefaultController(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n            return false;\n        }\n        return true;\n    }\n    function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n        var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n        if (shouldPull === false) {\n            return;\n        }\n        if (controller._pulling === true) {\n            controller._pullAgain = true;\n            return;\n        }\n        controller._pulling = true;\n        var pullPromise = controller._pullAlgorithm();\n        uponPromise(pullPromise, function () {\n            controller._pulling = false;\n            if (controller._pullAgain === true) {\n                controller._pullAgain = false;\n                ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n            }\n        }, function (e) {\n            ReadableStreamDefaultControllerError(controller, e);\n        });\n    }\n    function ReadableStreamDefaultControllerShouldCallPull(controller) {\n        var stream = controller._controlledReadableStream;\n        if (ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) === false) {\n            return false;\n        }\n        if (controller._started === false) {\n            return false;\n        }\n        if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n            return true;\n        }\n        var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n        if (desiredSize > 0) {\n            return true;\n        }\n        return false;\n    }\n    function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n        controller._pullAlgorithm = undefined;\n        controller._cancelAlgorithm = undefined;\n        controller._strategySizeAlgorithm = undefined;\n    }\n    // A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n    function ReadableStreamDefaultControllerClose(controller) {\n        var stream = controller._controlledReadableStream;\n        controller._closeRequested = true;\n        if (controller._queue.length === 0) {\n            ReadableStreamDefaultControllerClearAlgorithms(controller);\n            ReadableStreamClose(stream);\n        }\n    }\n    function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n        var stream = controller._controlledReadableStream;\n        if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n            ReadableStreamFulfillReadRequest(stream, chunk, false);\n        }\n        else {\n            var chunkSize = void 0;\n            try {\n                chunkSize = controller._strategySizeAlgorithm(chunk);\n            }\n            catch (chunkSizeE) {\n                ReadableStreamDefaultControllerError(controller, chunkSizeE);\n                throw chunkSizeE;\n            }\n            try {\n                EnqueueValueWithSize(controller, chunk, chunkSize);\n            }\n            catch (enqueueE) {\n                ReadableStreamDefaultControllerError(controller, enqueueE);\n                throw enqueueE;\n            }\n        }\n        ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    }\n    function ReadableStreamDefaultControllerError(controller, e) {\n        var stream = controller._controlledReadableStream;\n        if (stream._state !== 'readable') {\n            return;\n        }\n        ResetQueue(controller);\n        ReadableStreamDefaultControllerClearAlgorithms(controller);\n        ReadableStreamError(stream, e);\n    }\n    function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n        var stream = controller._controlledReadableStream;\n        var state = stream._state;\n        if (state === 'errored') {\n            return null;\n        }\n        if (state === 'closed') {\n            return 0;\n        }\n        return controller._strategyHWM - controller._queueTotalSize;\n    }\n    // This is used in the implementation of TransformStream.\n    function ReadableStreamDefaultControllerHasBackpressure(controller) {\n        if (ReadableStreamDefaultControllerShouldCallPull(controller) === true) {\n            return false;\n        }\n        return true;\n    }\n    function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n        var state = controller._controlledReadableStream._state;\n        if (controller._closeRequested === false && state === 'readable') {\n            return true;\n        }\n        return false;\n    }\n    function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n        controller._controlledReadableStream = stream;\n        controller._queue = undefined;\n        controller._queueTotalSize = undefined;\n        ResetQueue(controller);\n        controller._started = false;\n        controller._closeRequested = false;\n        controller._pullAgain = false;\n        controller._pulling = false;\n        controller._strategySizeAlgorithm = sizeAlgorithm;\n        controller._strategyHWM = highWaterMark;\n        controller._pullAlgorithm = pullAlgorithm;\n        controller._cancelAlgorithm = cancelAlgorithm;\n        stream._readableStreamController = controller;\n        var startResult = startAlgorithm();\n        uponPromise(promiseResolvedWith(startResult), function () {\n            controller._started = true;\n            ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n        }, function (r) {\n            ReadableStreamDefaultControllerError(controller, r);\n        });\n    }\n    function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n        var controller = Object.create(ReadableStreamDefaultController.prototype);\n        function startAlgorithm() {\n            return InvokeOrNoop(underlyingSource, 'start', [controller]);\n        }\n        var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'pull', 0, [controller]);\n        var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingSource, 'cancel', 1, []);\n        SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n    }\n    // Helper functions for the ReadableStreamDefaultController.\n    function defaultControllerBrandCheckException(name) {\n        return new TypeError(\"ReadableStreamDefaultController.prototype.\" + name + \" can only be used on a ReadableStreamDefaultController\");\n    }\n\n    function ReadableStreamTee(stream, cloneForBranch2) {\n        var reader = AcquireReadableStreamDefaultReader(stream);\n        var reading = false;\n        var canceled1 = false;\n        var canceled2 = false;\n        var reason1;\n        var reason2;\n        var branch1;\n        var branch2;\n        var resolveCancelPromise;\n        var cancelPromise = newPromise(function (resolve) {\n            resolveCancelPromise = resolve;\n        });\n        function pullAlgorithm() {\n            if (reading === true) {\n                return promiseResolvedWith(undefined);\n            }\n            reading = true;\n            var readPromise = transformPromiseWith(ReadableStreamDefaultReaderRead(reader), function (result) {\n                reading = false;\n                var done = result.done;\n                if (done === true) {\n                    if (canceled1 === false) {\n                        ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n                    }\n                    if (canceled2 === false) {\n                        ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n                    }\n                    return;\n                }\n                var value = result.value;\n                var value1 = value;\n                var value2 = value;\n                // There is no way to access the cloning code right now in the reference implementation.\n                // If we add one then we'll need an implementation for serializable objects.\n                // if (canceled2 === false && cloneForBranch2 === true) {\n                //   value2 = StructuredDeserialize(StructuredSerialize(value2));\n                // }\n                if (canceled1 === false) {\n                    ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, value1);\n                }\n                if (canceled2 === false) {\n                    ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, value2);\n                }\n            });\n            setPromiseIsHandledToTrue(readPromise);\n            return promiseResolvedWith(undefined);\n        }\n        function cancel1Algorithm(reason) {\n            canceled1 = true;\n            reason1 = reason;\n            if (canceled2 === true) {\n                var compositeReason = createArrayFromList([reason1, reason2]);\n                var cancelResult = ReadableStreamCancel(stream, compositeReason);\n                resolveCancelPromise(cancelResult);\n            }\n            return cancelPromise;\n        }\n        function cancel2Algorithm(reason) {\n            canceled2 = true;\n            reason2 = reason;\n            if (canceled1 === true) {\n                var compositeReason = createArrayFromList([reason1, reason2]);\n                var cancelResult = ReadableStreamCancel(stream, compositeReason);\n                resolveCancelPromise(cancelResult);\n            }\n            return cancelPromise;\n        }\n        function startAlgorithm() { }\n        branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n        branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n        uponRejection(reader._closedPromise, function (r) {\n            ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n            ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n        });\n        return [branch1, branch2];\n    }\n\n    /// <reference lib=\"es2015.core\" />\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger#Polyfill\n    var NumberIsInteger = Number.isInteger || function (value) {\n        return typeof value === 'number' &&\n            isFinite(value) &&\n            Math.floor(value) === value;\n    };\n\n    var ReadableStreamBYOBRequest = /** @class */ (function () {\n        /** @internal */\n        function ReadableStreamBYOBRequest() {\n            throw new TypeError('ReadableStreamBYOBRequest cannot be used directly');\n        }\n        Object.defineProperty(ReadableStreamBYOBRequest.prototype, \"view\", {\n            get: function () {\n                if (IsReadableStreamBYOBRequest(this) === false) {\n                    throw byobRequestBrandCheckException('view');\n                }\n                return this._view;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableStreamBYOBRequest.prototype.respond = function (bytesWritten) {\n            if (IsReadableStreamBYOBRequest(this) === false) {\n                throw byobRequestBrandCheckException('respond');\n            }\n            if (this._associatedReadableByteStreamController === undefined) {\n                throw new TypeError('This BYOB request has been invalidated');\n            }\n            if (IsDetachedBuffer(this._view.buffer) === true) ;\n            ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n        };\n        ReadableStreamBYOBRequest.prototype.respondWithNewView = function (view) {\n            if (IsReadableStreamBYOBRequest(this) === false) {\n                throw byobRequestBrandCheckException('respond');\n            }\n            if (this._associatedReadableByteStreamController === undefined) {\n                throw new TypeError('This BYOB request has been invalidated');\n            }\n            if (!ArrayBuffer.isView(view)) {\n                throw new TypeError('You can only respond with array buffer views');\n            }\n            if (IsDetachedBuffer(view.buffer) === true) ;\n            ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n        };\n        return ReadableStreamBYOBRequest;\n    }());\n    var ReadableByteStreamController = /** @class */ (function () {\n        /** @internal */\n        function ReadableByteStreamController() {\n            throw new TypeError('ReadableByteStreamController constructor cannot be used directly');\n        }\n        Object.defineProperty(ReadableByteStreamController.prototype, \"byobRequest\", {\n            get: function () {\n                if (IsReadableByteStreamController(this) === false) {\n                    throw byteStreamControllerBrandCheckException('byobRequest');\n                }\n                if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n                    var firstDescriptor = this._pendingPullIntos.peek();\n                    var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n                    var byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n                    SetUpReadableStreamBYOBRequest(byobRequest, this, view);\n                    this._byobRequest = byobRequest;\n                }\n                return this._byobRequest;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(ReadableByteStreamController.prototype, \"desiredSize\", {\n            get: function () {\n                if (IsReadableByteStreamController(this) === false) {\n                    throw byteStreamControllerBrandCheckException('desiredSize');\n                }\n                return ReadableByteStreamControllerGetDesiredSize(this);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableByteStreamController.prototype.close = function () {\n            if (IsReadableByteStreamController(this) === false) {\n                throw byteStreamControllerBrandCheckException('close');\n            }\n            if (this._closeRequested === true) {\n                throw new TypeError('The stream has already been closed; do not close it again!');\n            }\n            var state = this._controlledReadableByteStream._state;\n            if (state !== 'readable') {\n                throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be closed\");\n            }\n            ReadableByteStreamControllerClose(this);\n        };\n        ReadableByteStreamController.prototype.enqueue = function (chunk) {\n            if (IsReadableByteStreamController(this) === false) {\n                throw byteStreamControllerBrandCheckException('enqueue');\n            }\n            if (this._closeRequested === true) {\n                throw new TypeError('stream is closed or draining');\n            }\n            var state = this._controlledReadableByteStream._state;\n            if (state !== 'readable') {\n                throw new TypeError(\"The stream (in \" + state + \" state) is not in the readable state and cannot be enqueued to\");\n            }\n            if (!ArrayBuffer.isView(chunk)) {\n                throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n            }\n            if (IsDetachedBuffer(chunk.buffer) === true) ;\n            ReadableByteStreamControllerEnqueue(this, chunk);\n        };\n        ReadableByteStreamController.prototype.error = function (e) {\n            if (IsReadableByteStreamController(this) === false) {\n                throw byteStreamControllerBrandCheckException('error');\n            }\n            ReadableByteStreamControllerError(this, e);\n        };\n        /** @internal */\n        ReadableByteStreamController.prototype[CancelSteps] = function (reason) {\n            if (this._pendingPullIntos.length > 0) {\n                var firstDescriptor = this._pendingPullIntos.peek();\n                firstDescriptor.bytesFilled = 0;\n            }\n            ResetQueue(this);\n            var result = this._cancelAlgorithm(reason);\n            ReadableByteStreamControllerClearAlgorithms(this);\n            return result;\n        };\n        /** @internal */\n        ReadableByteStreamController.prototype[PullSteps] = function () {\n            var stream = this._controlledReadableByteStream;\n            if (this._queueTotalSize > 0) {\n                var entry = this._queue.shift();\n                this._queueTotalSize -= entry.byteLength;\n                ReadableByteStreamControllerHandleQueueDrain(this);\n                var view = void 0;\n                try {\n                    view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n                }\n                catch (viewE) {\n                    return promiseRejectedWith(viewE);\n                }\n                return promiseResolvedWith(ReadableStreamCreateReadResult(view, false, stream._reader._forAuthorCode));\n            }\n            var autoAllocateChunkSize = this._autoAllocateChunkSize;\n            if (autoAllocateChunkSize !== undefined) {\n                var buffer = void 0;\n                try {\n                    buffer = new ArrayBuffer(autoAllocateChunkSize);\n                }\n                catch (bufferE) {\n                    return promiseRejectedWith(bufferE);\n                }\n                var pullIntoDescriptor = {\n                    buffer: buffer,\n                    byteOffset: 0,\n                    byteLength: autoAllocateChunkSize,\n                    bytesFilled: 0,\n                    elementSize: 1,\n                    ctor: Uint8Array,\n                    readerType: 'default'\n                };\n                this._pendingPullIntos.push(pullIntoDescriptor);\n            }\n            var promise = ReadableStreamAddReadRequest(stream);\n            ReadableByteStreamControllerCallPullIfNeeded(this);\n            return promise;\n        };\n        return ReadableByteStreamController;\n    }());\n    // Abstract operations for the ReadableByteStreamController.\n    function IsReadableByteStreamController(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n            return false;\n        }\n        return true;\n    }\n    function IsReadableStreamBYOBRequest(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n            return false;\n        }\n        return true;\n    }\n    function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n        var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n        if (shouldPull === false) {\n            return;\n        }\n        if (controller._pulling === true) {\n            controller._pullAgain = true;\n            return;\n        }\n        controller._pulling = true;\n        // TODO: Test controller argument\n        var pullPromise = controller._pullAlgorithm();\n        uponPromise(pullPromise, function () {\n            controller._pulling = false;\n            if (controller._pullAgain === true) {\n                controller._pullAgain = false;\n                ReadableByteStreamControllerCallPullIfNeeded(controller);\n            }\n        }, function (e) {\n            ReadableByteStreamControllerError(controller, e);\n        });\n    }\n    function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n        ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n        controller._pendingPullIntos = new SimpleQueue();\n    }\n    function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n        var done = false;\n        if (stream._state === 'closed') {\n            done = true;\n        }\n        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n        if (pullIntoDescriptor.readerType === 'default') {\n            ReadableStreamFulfillReadRequest(stream, filledView, done);\n        }\n        else {\n            ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n        }\n    }\n    function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n        var bytesFilled = pullIntoDescriptor.bytesFilled;\n        var elementSize = pullIntoDescriptor.elementSize;\n        return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n    }\n    function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n        controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n        controller._queueTotalSize += byteLength;\n    }\n    function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n        var elementSize = pullIntoDescriptor.elementSize;\n        var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n        var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n        var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n        var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n        var totalBytesToCopyRemaining = maxBytesToCopy;\n        var ready = false;\n        if (maxAlignedBytes > currentAlignedBytes) {\n            totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n            ready = true;\n        }\n        var queue = controller._queue;\n        while (totalBytesToCopyRemaining > 0) {\n            var headOfQueue = queue.peek();\n            var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n            var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n            ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n            if (headOfQueue.byteLength === bytesToCopy) {\n                queue.shift();\n            }\n            else {\n                headOfQueue.byteOffset += bytesToCopy;\n                headOfQueue.byteLength -= bytesToCopy;\n            }\n            controller._queueTotalSize -= bytesToCopy;\n            ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n            totalBytesToCopyRemaining -= bytesToCopy;\n        }\n        return ready;\n    }\n    function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n        ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n        pullIntoDescriptor.bytesFilled += size;\n    }\n    function ReadableByteStreamControllerHandleQueueDrain(controller) {\n        if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n            ReadableByteStreamControllerClearAlgorithms(controller);\n            ReadableStreamClose(controller._controlledReadableByteStream);\n        }\n        else {\n            ReadableByteStreamControllerCallPullIfNeeded(controller);\n        }\n    }\n    function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n        if (controller._byobRequest === undefined) {\n            return;\n        }\n        controller._byobRequest._associatedReadableByteStreamController = undefined;\n        controller._byobRequest._view = undefined;\n        controller._byobRequest = undefined;\n    }\n    function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n        while (controller._pendingPullIntos.length > 0) {\n            if (controller._queueTotalSize === 0) {\n                return;\n            }\n            var pullIntoDescriptor = controller._pendingPullIntos.peek();\n            if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n                ReadableByteStreamControllerShiftPendingPullInto(controller);\n                ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n            }\n        }\n    }\n    function ReadableByteStreamControllerPullInto(controller, view) {\n        var stream = controller._controlledReadableByteStream;\n        var elementSize = 1;\n        if (view.constructor !== DataView) {\n            elementSize = view.constructor.BYTES_PER_ELEMENT;\n        }\n        var ctor = view.constructor;\n        var buffer = TransferArrayBuffer(view.buffer);\n        var pullIntoDescriptor = {\n            buffer: buffer,\n            byteOffset: view.byteOffset,\n            byteLength: view.byteLength,\n            bytesFilled: 0,\n            elementSize: elementSize,\n            ctor: ctor,\n            readerType: 'byob'\n        };\n        if (controller._pendingPullIntos.length > 0) {\n            controller._pendingPullIntos.push(pullIntoDescriptor);\n            // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n            // - No change happens on desiredSize\n            // - The source has already been notified of that there's at least 1 pending read(view)\n            return ReadableStreamAddReadIntoRequest(stream);\n        }\n        if (stream._state === 'closed') {\n            var emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n            return promiseResolvedWith(ReadableStreamCreateReadResult(emptyView, true, stream._reader._forAuthorCode));\n        }\n        if (controller._queueTotalSize > 0) {\n            if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n                var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n                ReadableByteStreamControllerHandleQueueDrain(controller);\n                return promiseResolvedWith(ReadableStreamCreateReadResult(filledView, false, stream._reader._forAuthorCode));\n            }\n            if (controller._closeRequested === true) {\n                var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n                ReadableByteStreamControllerError(controller, e);\n                return promiseRejectedWith(e);\n            }\n        }\n        controller._pendingPullIntos.push(pullIntoDescriptor);\n        var promise = ReadableStreamAddReadIntoRequest(stream);\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n        return promise;\n    }\n    function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n        firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n        var stream = controller._controlledReadableByteStream;\n        if (ReadableStreamHasBYOBReader(stream) === true) {\n            while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n                var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n                ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n            }\n        }\n    }\n    function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n        if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n            throw new RangeError('bytesWritten out of range');\n        }\n        ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n        if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n            // TODO: Figure out whether we should detach the buffer or not here.\n            return;\n        }\n        ReadableByteStreamControllerShiftPendingPullInto(controller);\n        var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n        if (remainderSize > 0) {\n            var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n            var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n            ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n        }\n        pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n        pullIntoDescriptor.bytesFilled -= remainderSize;\n        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n        ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n    }\n    function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n        var firstDescriptor = controller._pendingPullIntos.peek();\n        var stream = controller._controlledReadableByteStream;\n        if (stream._state === 'closed') {\n            if (bytesWritten !== 0) {\n                throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n            }\n            ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n        }\n        else {\n            ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n        }\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n    function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n        var descriptor = controller._pendingPullIntos.shift();\n        ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n        return descriptor;\n    }\n    function ReadableByteStreamControllerShouldCallPull(controller) {\n        var stream = controller._controlledReadableByteStream;\n        if (stream._state !== 'readable') {\n            return false;\n        }\n        if (controller._closeRequested === true) {\n            return false;\n        }\n        if (controller._started === false) {\n            return false;\n        }\n        if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n            return true;\n        }\n        if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n            return true;\n        }\n        var desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n        if (desiredSize > 0) {\n            return true;\n        }\n        return false;\n    }\n    function ReadableByteStreamControllerClearAlgorithms(controller) {\n        controller._pullAlgorithm = undefined;\n        controller._cancelAlgorithm = undefined;\n    }\n    // A client of ReadableByteStreamController may use these functions directly to bypass state check.\n    function ReadableByteStreamControllerClose(controller) {\n        var stream = controller._controlledReadableByteStream;\n        if (controller._queueTotalSize > 0) {\n            controller._closeRequested = true;\n            return;\n        }\n        if (controller._pendingPullIntos.length > 0) {\n            var firstPendingPullInto = controller._pendingPullIntos.peek();\n            if (firstPendingPullInto.bytesFilled > 0) {\n                var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n                ReadableByteStreamControllerError(controller, e);\n                throw e;\n            }\n        }\n        ReadableByteStreamControllerClearAlgorithms(controller);\n        ReadableStreamClose(stream);\n    }\n    function ReadableByteStreamControllerEnqueue(controller, chunk) {\n        var stream = controller._controlledReadableByteStream;\n        var buffer = chunk.buffer;\n        var byteOffset = chunk.byteOffset;\n        var byteLength = chunk.byteLength;\n        var transferredBuffer = TransferArrayBuffer(buffer);\n        if (ReadableStreamHasDefaultReader(stream) === true) {\n            if (ReadableStreamGetNumReadRequests(stream) === 0) {\n                ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n            }\n            else {\n                var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n                ReadableStreamFulfillReadRequest(stream, transferredView, false);\n            }\n        }\n        else if (ReadableStreamHasBYOBReader(stream) === true) {\n            // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n            ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n            ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n        }\n        else {\n            ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n        }\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n    function ReadableByteStreamControllerError(controller, e) {\n        var stream = controller._controlledReadableByteStream;\n        if (stream._state !== 'readable') {\n            return;\n        }\n        ReadableByteStreamControllerClearPendingPullIntos(controller);\n        ResetQueue(controller);\n        ReadableByteStreamControllerClearAlgorithms(controller);\n        ReadableStreamError(stream, e);\n    }\n    function ReadableByteStreamControllerGetDesiredSize(controller) {\n        var stream = controller._controlledReadableByteStream;\n        var state = stream._state;\n        if (state === 'errored') {\n            return null;\n        }\n        if (state === 'closed') {\n            return 0;\n        }\n        return controller._strategyHWM - controller._queueTotalSize;\n    }\n    function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n        bytesWritten = Number(bytesWritten);\n        if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n            throw new RangeError('bytesWritten must be a finite');\n        }\n        ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n    }\n    function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n        var firstDescriptor = controller._pendingPullIntos.peek();\n        if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n            throw new RangeError('The region specified by view does not match byobRequest');\n        }\n        if (firstDescriptor.byteLength !== view.byteLength) {\n            throw new RangeError('The buffer of view has different capacity than byobRequest');\n        }\n        firstDescriptor.buffer = view.buffer;\n        ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n    }\n    function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n        controller._controlledReadableByteStream = stream;\n        controller._pullAgain = false;\n        controller._pulling = false;\n        controller._byobRequest = undefined;\n        // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n        controller._queue = controller._queueTotalSize = undefined;\n        ResetQueue(controller);\n        controller._closeRequested = false;\n        controller._started = false;\n        controller._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n        controller._pullAlgorithm = pullAlgorithm;\n        controller._cancelAlgorithm = cancelAlgorithm;\n        controller._autoAllocateChunkSize = autoAllocateChunkSize;\n        controller._pendingPullIntos = new SimpleQueue();\n        stream._readableStreamController = controller;\n        var startResult = startAlgorithm();\n        uponPromise(promiseResolvedWith(startResult), function () {\n            controller._started = true;\n            ReadableByteStreamControllerCallPullIfNeeded(controller);\n        }, function (r) {\n            ReadableByteStreamControllerError(controller, r);\n        });\n    }\n    function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n        var controller = Object.create(ReadableByteStreamController.prototype);\n        function startAlgorithm() {\n            return InvokeOrNoop(underlyingByteSource, 'start', [controller]);\n        }\n        var pullAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'pull', 0, [controller]);\n        var cancelAlgorithm = CreateAlgorithmFromUnderlyingMethod(underlyingByteSource, 'cancel', 1, []);\n        var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n        if (autoAllocateChunkSize !== undefined) {\n            autoAllocateChunkSize = Number(autoAllocateChunkSize);\n            if (NumberIsInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n                throw new RangeError('autoAllocateChunkSize must be a positive integer');\n            }\n        }\n        SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n    }\n    function SetUpReadableStreamBYOBRequest(request, controller, view) {\n        request._associatedReadableByteStreamController = controller;\n        request._view = view;\n    }\n    // Helper functions for the ReadableStreamBYOBRequest.\n    function byobRequestBrandCheckException(name) {\n        return new TypeError(\"ReadableStreamBYOBRequest.prototype.\" + name + \" can only be used on a ReadableStreamBYOBRequest\");\n    }\n    // Helper functions for the ReadableByteStreamController.\n    function byteStreamControllerBrandCheckException(name) {\n        return new TypeError(\"ReadableByteStreamController.prototype.\" + name + \" can only be used on a ReadableByteStreamController\");\n    }\n\n    // Abstract operations for the ReadableStream.\n    function AcquireReadableStreamBYOBReader(stream, forAuthorCode) {\n        if (forAuthorCode === void 0) { forAuthorCode = false; }\n        var reader = new ReadableStreamBYOBReader(stream);\n        reader._forAuthorCode = forAuthorCode;\n        return reader;\n    }\n    // ReadableStream API exposed for controllers.\n    function ReadableStreamAddReadIntoRequest(stream) {\n        var promise = newPromise(function (resolve, reject) {\n            var readIntoRequest = {\n                _resolve: resolve,\n                _reject: reject\n            };\n            stream._reader._readIntoRequests.push(readIntoRequest);\n        });\n        return promise;\n    }\n    function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n        var reader = stream._reader;\n        var readIntoRequest = reader._readIntoRequests.shift();\n        readIntoRequest._resolve(ReadableStreamCreateReadResult(chunk, done, reader._forAuthorCode));\n    }\n    function ReadableStreamGetNumReadIntoRequests(stream) {\n        return stream._reader._readIntoRequests.length;\n    }\n    function ReadableStreamHasBYOBReader(stream) {\n        var reader = stream._reader;\n        if (reader === undefined) {\n            return false;\n        }\n        if (!IsReadableStreamBYOBReader(reader)) {\n            return false;\n        }\n        return true;\n    }\n    var ReadableStreamBYOBReader = /** @class */ (function () {\n        function ReadableStreamBYOBReader(stream) {\n            if (!IsReadableStream(stream)) {\n                throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' +\n                    'byte source');\n            }\n            if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n                throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +\n                    'source');\n            }\n            if (IsReadableStreamLocked(stream)) {\n                throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n            }\n            ReadableStreamReaderGenericInitialize(this, stream);\n            this._readIntoRequests = new SimpleQueue();\n        }\n        Object.defineProperty(ReadableStreamBYOBReader.prototype, \"closed\", {\n            get: function () {\n                if (!IsReadableStreamBYOBReader(this)) {\n                    return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n                }\n                return this._closedPromise;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableStreamBYOBReader.prototype.cancel = function (reason) {\n            if (!IsReadableStreamBYOBReader(this)) {\n                return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n            }\n            if (this._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('cancel'));\n            }\n            return ReadableStreamReaderGenericCancel(this, reason);\n        };\n        ReadableStreamBYOBReader.prototype.read = function (view) {\n            if (!IsReadableStreamBYOBReader(this)) {\n                return promiseRejectedWith(byobReaderBrandCheckException('read'));\n            }\n            if (this._ownerReadableStream === undefined) {\n                return promiseRejectedWith(readerLockException('read from'));\n            }\n            if (!ArrayBuffer.isView(view)) {\n                return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n            }\n            if (IsDetachedBuffer(view.buffer) === true) ;\n            if (view.byteLength === 0) {\n                return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n            }\n            return ReadableStreamBYOBReaderRead(this, view);\n        };\n        ReadableStreamBYOBReader.prototype.releaseLock = function () {\n            if (!IsReadableStreamBYOBReader(this)) {\n                throw byobReaderBrandCheckException('releaseLock');\n            }\n            if (this._ownerReadableStream === undefined) {\n                return;\n            }\n            if (this._readIntoRequests.length > 0) {\n                throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n            }\n            ReadableStreamReaderGenericRelease(this);\n        };\n        return ReadableStreamBYOBReader;\n    }());\n    // Abstract operations for the readers.\n    function IsReadableStreamBYOBReader(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n            return false;\n        }\n        return true;\n    }\n    function ReadableStreamBYOBReaderRead(reader, view) {\n        var stream = reader._ownerReadableStream;\n        stream._disturbed = true;\n        if (stream._state === 'errored') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        // Controllers must implement this.\n        return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n    }\n    // Helper functions for the ReadableStreamBYOBReader.\n    function byobReaderBrandCheckException(name) {\n        return new TypeError(\"ReadableStreamBYOBReader.prototype.\" + name + \" can only be used on a ReadableStreamBYOBReader\");\n    }\n\n    var ReadableStream = /** @class */ (function () {\n        function ReadableStream(underlyingSource, strategy) {\n            if (underlyingSource === void 0) { underlyingSource = {}; }\n            if (strategy === void 0) { strategy = {}; }\n            InitializeReadableStream(this);\n            var size = strategy.size;\n            var highWaterMark = strategy.highWaterMark;\n            var type = underlyingSource.type;\n            var typeString = String(type);\n            if (typeString === 'bytes') {\n                if (size !== undefined) {\n                    throw new RangeError('The strategy for a byte stream cannot have a size function');\n                }\n                if (highWaterMark === undefined) {\n                    highWaterMark = 0;\n                }\n                highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n                SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n            }\n            else if (type === undefined) {\n                var sizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(size);\n                if (highWaterMark === undefined) {\n                    highWaterMark = 1;\n                }\n                highWaterMark = ValidateAndNormalizeHighWaterMark(highWaterMark);\n                SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n            }\n            else {\n                throw new RangeError('Invalid type is specified');\n            }\n        }\n        Object.defineProperty(ReadableStream.prototype, \"locked\", {\n            get: function () {\n                if (IsReadableStream(this) === false) {\n                    throw streamBrandCheckException$1('locked');\n                }\n                return IsReadableStreamLocked(this);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ReadableStream.prototype.cancel = function (reason) {\n            if (IsReadableStream(this) === false) {\n                return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n            }\n            if (IsReadableStreamLocked(this) === true) {\n                return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n            }\n            return ReadableStreamCancel(this, reason);\n        };\n        ReadableStream.prototype.getReader = function (_a) {\n            var mode = (_a === void 0 ? {} : _a).mode;\n            if (IsReadableStream(this) === false) {\n                throw streamBrandCheckException$1('getReader');\n            }\n            if (mode === undefined) {\n                return AcquireReadableStreamDefaultReader(this, true);\n            }\n            mode = String(mode);\n            if (mode === 'byob') {\n                return AcquireReadableStreamBYOBReader(this, true);\n            }\n            throw new RangeError('Invalid mode is specified');\n        };\n        ReadableStream.prototype.pipeThrough = function (_a, _b) {\n            var writable = _a.writable, readable = _a.readable;\n            var _c = _b === void 0 ? {} : _b, preventClose = _c.preventClose, preventAbort = _c.preventAbort, preventCancel = _c.preventCancel, signal = _c.signal;\n            if (IsReadableStream(this) === false) {\n                throw streamBrandCheckException$1('pipeThrough');\n            }\n            if (IsWritableStream(writable) === false) {\n                throw new TypeError('writable argument to pipeThrough must be a WritableStream');\n            }\n            if (IsReadableStream(readable) === false) {\n                throw new TypeError('readable argument to pipeThrough must be a ReadableStream');\n            }\n            preventClose = Boolean(preventClose);\n            preventAbort = Boolean(preventAbort);\n            preventCancel = Boolean(preventCancel);\n            if (signal !== undefined && !isAbortSignal(signal)) {\n                throw new TypeError('ReadableStream.prototype.pipeThrough\\'s signal option must be an AbortSignal');\n            }\n            if (IsReadableStreamLocked(this) === true) {\n                throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n            }\n            if (IsWritableStreamLocked(writable) === true) {\n                throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n            }\n            var promise = ReadableStreamPipeTo(this, writable, preventClose, preventAbort, preventCancel, signal);\n            setPromiseIsHandledToTrue(promise);\n            return readable;\n        };\n        ReadableStream.prototype.pipeTo = function (dest, _a) {\n            var _b = _a === void 0 ? {} : _a, preventClose = _b.preventClose, preventAbort = _b.preventAbort, preventCancel = _b.preventCancel, signal = _b.signal;\n            if (IsReadableStream(this) === false) {\n                return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n            }\n            if (IsWritableStream(dest) === false) {\n                return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n            }\n            preventClose = Boolean(preventClose);\n            preventAbort = Boolean(preventAbort);\n            preventCancel = Boolean(preventCancel);\n            if (signal !== undefined && !isAbortSignal(signal)) {\n                return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo\\'s signal option must be an AbortSignal'));\n            }\n            if (IsReadableStreamLocked(this) === true) {\n                return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n            }\n            if (IsWritableStreamLocked(dest) === true) {\n                return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n            }\n            return ReadableStreamPipeTo(this, dest, preventClose, preventAbort, preventCancel, signal);\n        };\n        ReadableStream.prototype.tee = function () {\n            if (IsReadableStream(this) === false) {\n                throw streamBrandCheckException$1('tee');\n            }\n            var branches = ReadableStreamTee(this);\n            return createArrayFromList(branches);\n        };\n        ReadableStream.prototype.getIterator = function (_a) {\n            var _b = (_a === void 0 ? {} : _a).preventCancel, preventCancel = _b === void 0 ? false : _b;\n            if (IsReadableStream(this) === false) {\n                throw streamBrandCheckException$1('getIterator');\n            }\n            return AcquireReadableStreamAsyncIterator(this, preventCancel);\n        };\n        return ReadableStream;\n    }());\n    if (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n        Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n            value: ReadableStream.prototype.getIterator,\n            enumerable: false,\n            writable: true,\n            configurable: true\n        });\n    }\n    // Abstract operations for the ReadableStream.\n    // Throws if and only if startAlgorithm throws.\n    function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n        if (highWaterMark === void 0) { highWaterMark = 1; }\n        if (sizeAlgorithm === void 0) { sizeAlgorithm = function () { return 1; }; }\n        var stream = Object.create(ReadableStream.prototype);\n        InitializeReadableStream(stream);\n        var controller = Object.create(ReadableStreamDefaultController.prototype);\n        SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n        return stream;\n    }\n    function InitializeReadableStream(stream) {\n        stream._state = 'readable';\n        stream._reader = undefined;\n        stream._storedError = undefined;\n        stream._disturbed = false;\n    }\n    function IsReadableStream(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n            return false;\n        }\n        return true;\n    }\n    function IsReadableStreamLocked(stream) {\n        if (stream._reader === undefined) {\n            return false;\n        }\n        return true;\n    }\n    // ReadableStream API exposed for controllers.\n    function ReadableStreamCancel(stream, reason) {\n        stream._disturbed = true;\n        if (stream._state === 'closed') {\n            return promiseResolvedWith(undefined);\n        }\n        if (stream._state === 'errored') {\n            return promiseRejectedWith(stream._storedError);\n        }\n        ReadableStreamClose(stream);\n        var sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n        return transformPromiseWith(sourceCancelPromise, noop);\n    }\n    function ReadableStreamClose(stream) {\n        stream._state = 'closed';\n        var reader = stream._reader;\n        if (reader === undefined) {\n            return;\n        }\n        if (IsReadableStreamDefaultReader(reader)) {\n            reader._readRequests.forEach(function (readRequest) {\n                readRequest._resolve(ReadableStreamCreateReadResult(undefined, true, reader._forAuthorCode));\n            });\n            reader._readRequests = new SimpleQueue();\n        }\n        defaultReaderClosedPromiseResolve(reader);\n    }\n    function ReadableStreamError(stream, e) {\n        stream._state = 'errored';\n        stream._storedError = e;\n        var reader = stream._reader;\n        if (reader === undefined) {\n            return;\n        }\n        if (IsReadableStreamDefaultReader(reader)) {\n            reader._readRequests.forEach(function (readRequest) {\n                readRequest._reject(e);\n            });\n            reader._readRequests = new SimpleQueue();\n        }\n        else {\n            reader._readIntoRequests.forEach(function (readIntoRequest) {\n                readIntoRequest._reject(e);\n            });\n            reader._readIntoRequests = new SimpleQueue();\n        }\n        defaultReaderClosedPromiseReject(reader, e);\n    }\n    // Helper functions for the ReadableStream.\n    function streamBrandCheckException$1(name) {\n        return new TypeError(\"ReadableStream.prototype.\" + name + \" can only be used on a ReadableStream\");\n    }\n\n    var ByteLengthQueuingStrategy = /** @class */ (function () {\n        function ByteLengthQueuingStrategy(_a) {\n            var highWaterMark = _a.highWaterMark;\n            this.highWaterMark = highWaterMark;\n        }\n        ByteLengthQueuingStrategy.prototype.size = function (chunk) {\n            return chunk.byteLength;\n        };\n        return ByteLengthQueuingStrategy;\n    }());\n\n    var CountQueuingStrategy = /** @class */ (function () {\n        function CountQueuingStrategy(_a) {\n            var highWaterMark = _a.highWaterMark;\n            this.highWaterMark = highWaterMark;\n        }\n        CountQueuingStrategy.prototype.size = function () {\n            return 1;\n        };\n        return CountQueuingStrategy;\n    }());\n\n    // Class TransformStream\n    var TransformStream = /** @class */ (function () {\n        function TransformStream(transformer, writableStrategy, readableStrategy) {\n            if (transformer === void 0) { transformer = {}; }\n            if (writableStrategy === void 0) { writableStrategy = {}; }\n            if (readableStrategy === void 0) { readableStrategy = {}; }\n            var writableSizeFunction = writableStrategy.size;\n            var writableHighWaterMark = writableStrategy.highWaterMark;\n            var readableSizeFunction = readableStrategy.size;\n            var readableHighWaterMark = readableStrategy.highWaterMark;\n            var writableType = transformer.writableType;\n            if (writableType !== undefined) {\n                throw new RangeError('Invalid writable type specified');\n            }\n            var writableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(writableSizeFunction);\n            if (writableHighWaterMark === undefined) {\n                writableHighWaterMark = 1;\n            }\n            writableHighWaterMark = ValidateAndNormalizeHighWaterMark(writableHighWaterMark);\n            var readableType = transformer.readableType;\n            if (readableType !== undefined) {\n                throw new RangeError('Invalid readable type specified');\n            }\n            var readableSizeAlgorithm = MakeSizeAlgorithmFromSizeFunction(readableSizeFunction);\n            if (readableHighWaterMark === undefined) {\n                readableHighWaterMark = 0;\n            }\n            readableHighWaterMark = ValidateAndNormalizeHighWaterMark(readableHighWaterMark);\n            var startPromise_resolve;\n            var startPromise = newPromise(function (resolve) {\n                startPromise_resolve = resolve;\n            });\n            InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n            SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n            var startResult = InvokeOrNoop(transformer, 'start', [this._transformStreamController]);\n            startPromise_resolve(startResult);\n        }\n        Object.defineProperty(TransformStream.prototype, \"readable\", {\n            get: function () {\n                if (IsTransformStream(this) === false) {\n                    throw streamBrandCheckException$2('readable');\n                }\n                return this._readable;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(TransformStream.prototype, \"writable\", {\n            get: function () {\n                if (IsTransformStream(this) === false) {\n                    throw streamBrandCheckException$2('writable');\n                }\n                return this._writable;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        return TransformStream;\n    }());\n    function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n        function startAlgorithm() {\n            return startPromise;\n        }\n        function writeAlgorithm(chunk) {\n            return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n        }\n        function abortAlgorithm(reason) {\n            return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n        }\n        function closeAlgorithm() {\n            return TransformStreamDefaultSinkCloseAlgorithm(stream);\n        }\n        stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n        function pullAlgorithm() {\n            return TransformStreamDefaultSourcePullAlgorithm(stream);\n        }\n        function cancelAlgorithm(reason) {\n            TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n            return promiseResolvedWith(undefined);\n        }\n        stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n        // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.\n        stream._backpressure = undefined;\n        stream._backpressureChangePromise = undefined;\n        stream._backpressureChangePromise_resolve = undefined;\n        TransformStreamSetBackpressure(stream, true);\n        // Used by IsWritableStream() which is called by SetUpTransformStreamDefaultController().\n        stream._transformStreamController = undefined;\n    }\n    function IsTransformStream(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n            return false;\n        }\n        return true;\n    }\n    // This is a no-op if both sides are already errored.\n    function TransformStreamError(stream, e) {\n        ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n        TransformStreamErrorWritableAndUnblockWrite(stream, e);\n    }\n    function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n        TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n        WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n        if (stream._backpressure === true) {\n            // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()\n            // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time\n            // _backpressure is set.\n            TransformStreamSetBackpressure(stream, false);\n        }\n    }\n    function TransformStreamSetBackpressure(stream, backpressure) {\n        // Passes also when called during construction.\n        if (stream._backpressureChangePromise !== undefined) {\n            stream._backpressureChangePromise_resolve();\n        }\n        stream._backpressureChangePromise = newPromise(function (resolve) {\n            stream._backpressureChangePromise_resolve = resolve;\n        });\n        stream._backpressure = backpressure;\n    }\n    var TransformStreamDefaultController = /** @class */ (function () {\n        /** @internal */\n        function TransformStreamDefaultController() {\n            throw new TypeError('TransformStreamDefaultController instances cannot be created directly');\n        }\n        Object.defineProperty(TransformStreamDefaultController.prototype, \"desiredSize\", {\n            get: function () {\n                if (IsTransformStreamDefaultController(this) === false) {\n                    throw defaultControllerBrandCheckException$1('desiredSize');\n                }\n                var readableController = this._controlledTransformStream._readable._readableStreamController;\n                return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        TransformStreamDefaultController.prototype.enqueue = function (chunk) {\n            if (IsTransformStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException$1('enqueue');\n            }\n            TransformStreamDefaultControllerEnqueue(this, chunk);\n        };\n        TransformStreamDefaultController.prototype.error = function (reason) {\n            if (IsTransformStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException$1('error');\n            }\n            TransformStreamDefaultControllerError(this, reason);\n        };\n        TransformStreamDefaultController.prototype.terminate = function () {\n            if (IsTransformStreamDefaultController(this) === false) {\n                throw defaultControllerBrandCheckException$1('terminate');\n            }\n            TransformStreamDefaultControllerTerminate(this);\n        };\n        return TransformStreamDefaultController;\n    }());\n    // Transform Stream Default Controller Abstract Operations\n    function IsTransformStreamDefaultController(x) {\n        if (!typeIsObject(x)) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n            return false;\n        }\n        return true;\n    }\n    function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n        controller._controlledTransformStream = stream;\n        stream._transformStreamController = controller;\n        controller._transformAlgorithm = transformAlgorithm;\n        controller._flushAlgorithm = flushAlgorithm;\n    }\n    function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n        var controller = Object.create(TransformStreamDefaultController.prototype);\n        var transformAlgorithm = function (chunk) {\n            try {\n                TransformStreamDefaultControllerEnqueue(controller, chunk);\n                return promiseResolvedWith(undefined);\n            }\n            catch (transformResultE) {\n                return promiseRejectedWith(transformResultE);\n            }\n        };\n        var transformMethod = transformer.transform;\n        if (transformMethod !== undefined) {\n            if (typeof transformMethod !== 'function') {\n                throw new TypeError('transform is not a method');\n            }\n            transformAlgorithm = function (chunk) { return PromiseCall(transformMethod, transformer, [chunk, controller]); };\n        }\n        var flushAlgorithm = CreateAlgorithmFromUnderlyingMethod(transformer, 'flush', 0, [controller]);\n        SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n    }\n    function TransformStreamDefaultControllerClearAlgorithms(controller) {\n        controller._transformAlgorithm = undefined;\n        controller._flushAlgorithm = undefined;\n    }\n    function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n        var stream = controller._controlledTransformStream;\n        var readableController = stream._readable._readableStreamController;\n        if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === false) {\n            throw new TypeError('Readable side is not in a state that permits enqueue');\n        }\n        // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n        // accept TransformStreamDefaultControllerEnqueue() calls.\n        try {\n            ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n        }\n        catch (e) {\n            // This happens when readableStrategy.size() throws.\n            TransformStreamErrorWritableAndUnblockWrite(stream, e);\n            throw stream._readable._storedError;\n        }\n        var backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n        if (backpressure !== stream._backpressure) {\n            TransformStreamSetBackpressure(stream, true);\n        }\n    }\n    function TransformStreamDefaultControllerError(controller, e) {\n        TransformStreamError(controller._controlledTransformStream, e);\n    }\n    function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n        var transformPromise = controller._transformAlgorithm(chunk);\n        return transformPromiseWith(transformPromise, undefined, function (r) {\n            TransformStreamError(controller._controlledTransformStream, r);\n            throw r;\n        });\n    }\n    function TransformStreamDefaultControllerTerminate(controller) {\n        var stream = controller._controlledTransformStream;\n        var readableController = stream._readable._readableStreamController;\n        if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n            ReadableStreamDefaultControllerClose(readableController);\n        }\n        var error = new TypeError('TransformStream terminated');\n        TransformStreamErrorWritableAndUnblockWrite(stream, error);\n    }\n    // TransformStreamDefaultSink Algorithms\n    function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n        var controller = stream._transformStreamController;\n        if (stream._backpressure === true) {\n            var backpressureChangePromise = stream._backpressureChangePromise;\n            return transformPromiseWith(backpressureChangePromise, function () {\n                var writable = stream._writable;\n                var state = writable._state;\n                if (state === 'erroring') {\n                    throw writable._storedError;\n                }\n                return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n            });\n        }\n        return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n    }\n    function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n        // abort() is not called synchronously, so it is possible for abort() to be called when the stream is already\n        // errored.\n        TransformStreamError(stream, reason);\n        return promiseResolvedWith(undefined);\n    }\n    function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n        // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n        var readable = stream._readable;\n        var controller = stream._transformStreamController;\n        var flushPromise = controller._flushAlgorithm();\n        TransformStreamDefaultControllerClearAlgorithms(controller);\n        // Return a promise that is fulfilled with undefined on success.\n        return transformPromiseWith(flushPromise, function () {\n            if (readable._state === 'errored') {\n                throw readable._storedError;\n            }\n            var readableController = readable._readableStreamController;\n            if (ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController) === true) {\n                ReadableStreamDefaultControllerClose(readableController);\n            }\n        }, function (r) {\n            TransformStreamError(stream, r);\n            throw readable._storedError;\n        });\n    }\n    // TransformStreamDefaultSource Algorithms\n    function TransformStreamDefaultSourcePullAlgorithm(stream) {\n        // Invariant. Enforced by the promises returned by start() and pull().\n        TransformStreamSetBackpressure(stream, false);\n        // Prevent the next pull() call until there is backpressure.\n        return stream._backpressureChangePromise;\n    }\n    // Helper functions for the TransformStreamDefaultController.\n    function defaultControllerBrandCheckException$1(name) {\n        return new TypeError(\"TransformStreamDefaultController.prototype.\" + name + \" can only be used on a TransformStreamDefaultController\");\n    }\n    // Helper functions for the TransformStream.\n    function streamBrandCheckException$2(name) {\n        return new TypeError(\"TransformStream.prototype.\" + name + \" can only be used on a TransformStream\");\n    }\n\n    exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n    exports.CountQueuingStrategy = CountQueuingStrategy;\n    exports.ReadableStream = ReadableStream;\n    exports.TransformStream = TransformStream;\n    exports.WritableStream = WritableStream;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=ponyfill.js.map\n","require('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var nativeMethod = NativePrototype[KEY];\n    redefine(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        nativeMethod.call(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        nativeMethod.call(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  // eslint-disable-next-line max-len\n  if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n    new NativeConstructor().entries().next();\n  })))) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.REQUIRED = true;\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + ++id, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!has(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar meta = module.exports = {\n  REQUIRED: false,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","var 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    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, CONSTRUCTOR_NAME);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n    });\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    redefineAll(C.prototype, IS_MAP ? {\n      // 23.1.3.6 Map.prototype.get(key)\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // 23.1.3.9 Map.prototype.set(key, value)\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // 23.2.3.1 Set.prototype.add(value)\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return C;\n  },\n  setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","require('../../modules/es.set');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.weak-map');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.WeakMap;\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.github.io/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.REQUIRED = true;\n  var WeakMapPrototype = $WeakMap.prototype;\n  var nativeDelete = WeakMapPrototype['delete'];\n  var nativeHas = WeakMapPrototype.has;\n  var nativeGet = WeakMapPrototype.get;\n  var nativeSet = WeakMapPrototype.set;\n  redefineAll(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceIternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete.call(this, key) || state.frozen['delete'](key);\n      } return nativeDelete.call(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceIternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas.call(this, key) || state.frozen.has(key);\n      } return nativeHas.call(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceIternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n      } return nativeGet.call(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceIternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet.call(this, key, value);\n      return this;\n    }\n  });\n}\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n  return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.entries.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, CONSTRUCTOR_NAME);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        id: id++,\n        frozen: undefined\n      });\n      if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n    });\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && $has(data, state.id) && delete data[state.id];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && $has(data, state.id);\n      }\n    });\n\n    redefineAll(C.prototype, IS_MAP ? {\n      // 23.3.3.3 WeakMap.prototype.get(key)\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          return data ? data[state.id] : undefined;\n        }\n      },\n      // 23.3.3.5 WeakMap.prototype.set(key, value)\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // 23.4.3.1 WeakSet.prototype.add(value)\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return C;\n  }\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.weak-set');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.WeakSet;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.github.io/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n","require('../../modules/es.string.code-point-at');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'codePointAt');\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n","require('../../modules/es.string.from-code-point');\nvar path = require('../../internals/path');\n\nmodule.exports = path.String.fromCodePoint;\n","var $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar fromCharCode = String.fromCharCode;\nvar nativeFromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.github.io/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n      elements.push(code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)\n      );\n    } return elements.join('');\n  }\n});\n","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.json.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","require('../../modules/es.string.pad-start');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'padStart');\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = String(requireObjectCoercible($this));\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : String(fillString);\n    var intMaxLength = toLength(maxLength);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr == '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n  var str = String(requireObjectCoercible(this));\n  var result = '';\n  var n = toInteger(count);\n  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","require('../../modules/es.string.pad-end');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'padEnd');\n","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.github.io/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.github.io/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\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/* uses XRef */\n\nimport { assert, unreachable } from \"../shared/util.js\";\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Name(name) {\n    this.name = name;\n  }\n\n  Name.prototype = {};\n\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    // eslint-disable-next-line no-restricted-syntax\n    return nameValue ? nameValue : (nameCache[name] = new Name(name));\n  };\n\n  Name._clearCache = function () {\n    nameCache = Object.create(null);\n  };\n\n  return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n\n  Cmd.prototype = {};\n\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    // eslint-disable-next-line no-restricted-syntax\n    return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n  };\n\n  Cmd._clearCache = function () {\n    cmdCache = Object.create(null);\n  };\n\n  return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable; // creating closure on some variable\n  };\n\n  // xref is optional\n  // eslint-disable-next-line no-shadow\n  function Dict(xref) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n  }\n\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n\n    get size() {\n      return Object.keys(this._map).length;\n    },\n\n    // automatically dereferences Ref objects\n    get(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetch(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but returns a promise and uses fetchIfRefAsync().\n    async getAsync(key1, key2, key3) {\n      let value = this._map[key1];\n      if (value === undefined && key2 !== undefined) {\n        value = this._map[key2];\n        if (value === undefined && key3 !== undefined) {\n          value = this._map[key3];\n        }\n      }\n      if (value instanceof Ref && this.xref) {\n        return this.xref.fetchAsync(value, this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // Same as get(), but dereferences all elements if the result is an Array.\n    getArray(key1, key2, key3) {\n      let value = this.get(key1, key2, key3);\n      if (!Array.isArray(value) || !this.xref) {\n        return value;\n      }\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (!(value[i] instanceof Ref)) {\n          continue;\n        }\n        value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n      }\n      return value;\n    },\n\n    // no dereferencing\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n\n    // no dereferencing\n    getRawValues: function Dict_getRawValues() {\n      return Object.values(this._map);\n    },\n\n    set: function Dict_set(key, value) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        value === undefined\n      ) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n      this._map[key] = value;\n    },\n\n    has: function Dict_has(key) {\n      return this._map[key] !== undefined;\n    },\n\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    },\n  };\n\n  Dict.empty = new Dict(null);\n\n  Dict.merge = function ({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref);\n\n    if (!mergeSubDicts) {\n      for (const dict of dictArray) {\n        if (!(dict instanceof Dict)) {\n          continue;\n        }\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (mergedDict._map[key] === undefined) {\n            mergedDict._map[key] = value;\n          }\n        }\n      }\n      return mergedDict.size > 0 ? mergedDict : Dict.empty;\n    }\n    const properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        if (!(dict instanceof Dict)) {\n          continue;\n        }\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  };\n\n  return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    },\n  };\n\n  Ref.get = function (num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    const refValue = refCache[key];\n    // eslint-disable-next-line no-restricted-syntax\n    return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n  };\n\n  Ref._clearCache = function () {\n    refCache = Object.create(null);\n  };\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor() {\n    this._set = new Set();\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  forEach(callback) {\n    for (const value of this._map.values()) {\n      callback(value);\n    }\n  }\n\n  clear() {\n    this._map.clear();\n  }\n}\n\nfunction isEOF(v) {\n  return v === EOF;\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return typeof v === \"object\" && v !== null && v.getBytes !== undefined;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  EOF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n  isEOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\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  createValidAbsoluteUrl,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    let docBaseUrl = null;\n    if (this._docBaseUrl) {\n      const absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n      if (absoluteUrl) {\n        docBaseUrl = absoluteUrl.href;\n      } else {\n        warn(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n      }\n    }\n    return shadow(this, \"docBaseUrl\", docBaseUrl);\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = docBaseUrl;\n    this.evaluatorOptions = evaluatorOptions;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = docBaseUrl;\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\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/* eslint no-var: error */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ChunkedStream {\n  constructor(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n\n  allChunksLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this._loadedChunks.has(chunk)) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const chunkSize = this.chunkSize;\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  // Returns subarray of original buffer, should only be read.\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  skip(n) {\n    if (!n) {\n      n = 1;\n    }\n    this.pos += n;\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    ChunkedStreamSubstream.prototype.allChunksLoaded = function () {\n      if (this.numChunksLoaded === this.numChunks) {\n        return true;\n      }\n      return this.getMissingChunks().length === 0;\n    };\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    const promise = new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    });\n    promise.then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n    // TODO check errors\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = new Set();\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this._promisesByRequest.set(requestId, capability);\n\n    const chunksToRequest = [];\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n      if (!requestIds) {\n        requestIds = [];\n        this._requestsByChunk.set(chunk, requestIds);\n\n        chunksToRequest.push(chunk);\n      }\n      requestIds.push(requestId);\n    }\n\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(\n          groupedChunk.endChunk * this.chunkSize,\n          this.length\n        );\n        this.sendRequest(begin, end);\n      }\n    }\n\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return; // Ignoring any pending requests after abort.\n      }\n      throw reason;\n    });\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.allChunksLoaded()) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this._requestsByChunk.get(curChunk);\n      if (!requestIds) {\n        continue;\n      }\n      this._requestsByChunk.delete(curChunk);\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n      this._promisesByRequest.delete(requestId);\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length,\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 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/* eslint no-var: error */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`);\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass XRefEntryException extends BaseException {}\n\nclass XRefParseException extends BaseException {}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\nexport {\n  getLookupTableFactory,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n  getInheritableProperty,\n  toRomanNumerals,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  isWhiteSpace,\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/* eslint no-var: error */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, ObjectLoader, XRef } from \"./obj.js\";\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isStream,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { NullStream, Stream, StreamsSequenceStream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Linearization } from \"./parser.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nfunction isAnnotationRenderable(annotation, intent) {\n  return (\n    (intent === \"display\" && annotation.viewable) ||\n    (intent === \"print\" && annotation.printable)\n  );\n}\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.globalImageCache = globalImageCache;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n\n    const idCounters = {\n      obj: 0,\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !isDict(value[0])) {\n      return value[0];\n    }\n    return Dict.merge({ xref: this.xref, dictArray: value });\n  }\n\n  get content() {\n    return this.pageDict.get(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (!isNum(obj) || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate = rotate % 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  getContentStream() {\n    const content = this.content;\n    let stream;\n\n    if (Array.isArray(content)) {\n      // Fetching the individual streams from the array.\n      const xref = this.xref;\n      const streams = [];\n      for (const subStream of content) {\n        streams.push(xref.fetchIfRef(subStream));\n      }\n      stream = new StreamsSequenceStream(streams);\n    } else if (isStream(content)) {\n      stream = content;\n    } else {\n      // Replace non-existent page content with empty content.\n      stream = new NullStream();\n    }\n    return stream;\n  }\n\n  save(handler, task, annotationStorage) {\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    // Fetch the page's annotations and save the content\n    // in case of interactive form fields.\n    return this._parsedAnnotations.then(function (annotations) {\n      const newRefsPromises = [];\n      for (const annotation of annotations) {\n        if (!isAnnotationRenderable(annotation, \"print\")) {\n          continue;\n        }\n        newRefsPromises.push(\n          annotation\n            .save(partialEvaluator, task, annotationStorage)\n            .catch(function (reason) {\n              warn(\n                \"save - ignoring annotation data during \" +\n                  `\"${task.name}\" task: \"${reason}\".`\n              );\n              return null;\n            })\n        );\n      }\n\n      return Promise.all(newRefsPromises);\n    });\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    renderInteractiveForms,\n    annotationStorage,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources),\n        pageIndex: this.pageIndex,\n        intent,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function () {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function ([pageOpList, annotations]) {\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (isAnnotationRenderable(annotation, intent)) {\n            opListPromises.push(\n              annotation\n                .getOperatorList(\n                  partialEvaluator,\n                  task,\n                  renderInteractiveForms,\n                  annotationStorage\n                )\n                .catch(function (reason) {\n                  warn(\n                    \"getOperatorList - ignoring annotation data during \" +\n                      `\"${task.name}\" task: \"${reason}\".`\n                  );\n                  return null;\n                })\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    normalizeWhitespace,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.pdfManager.ensure(\n      this,\n      \"getContentStream\"\n    );\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"XObject\",\n      \"Font\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this._localIdFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        normalizeWhitespace,\n        combineTextItems,\n        sink,\n      });\n    });\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n      for (let i = 0, ii = annotations.length; i < ii; i++) {\n        if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n          annotationsData.push(annotations[i].data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    return shadow(\n      this,\n      \"annotations\",\n      this._getInheritableProperty(\"Annots\") || []\n    );\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationPromises = [];\n        for (const annotationRef of this.annotations) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRef,\n              this.pdfManager,\n              this._localIdFactory\n            ).catch(function (reason) {\n              warn(`_parsedAnnotations: \"${reason}\".`);\n              return null;\n            })\n          );\n        }\n\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(annotation => !!annotation);\n        });\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n// prettier-ignore\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.[0-9]$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n    this._pagePromises = [];\n    this._version = null;\n\n    const idCounters = {\n      font: 0,\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n\n      static createObjId() {\n        unreachable(\"Abstract method `createObjId` called.\");\n      }\n    };\n  }\n\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n\n    // The `checkHeader` method is called before this method and parses the\n    // version from the header. The specification states in section 7.5.2\n    // that the version from the catalog, if present, should overwrite the\n    // version from the header.\n    if (this.catalog.version) {\n      this._version = this.catalog.version;\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this._version) {\n      // Remove the \"%PDF-\" prefix.\n      this._version = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  get numPages() {\n    const linearization = this.linearization;\n    const num = linearization ? linearization.numPages : this.catalog.numPages;\n    return shadow(this, \"numPages\", num);\n  }\n\n  /**\n   * @private\n   */\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n        return this._hasOnlyDocumentSignatures(\n          field.get(\"Kids\"),\n          recursionDepth\n        );\n      }\n      const isSignature = isName(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible =\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n\n  get formInfo() {\n    const formInfo = { hasAcroForm: false, hasXfa: false };\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return shadow(this, \"formInfo\", formInfo);\n    }\n\n    try {\n      // The document contains XFA data if the `XFA` entry is a non-empty\n      // array or stream.\n      const xfa = acroForm.get(\"XFA\");\n      const hasXfa =\n        (Array.isArray(xfa) && xfa.length > 0) ||\n        (isStream(xfa) && !xfa.isEmpty);\n      formInfo.hasXfa = hasXfa;\n\n      // The document contains AcroForm data if the `Fields` entry is a\n      // non-empty array and it doesn't consist of only document signatures.\n      // This second check is required for files that don't actually contain\n      // AcroForm data (only XFA data), but that use the `Fields` entry to\n      // store (invisible) document signatures. This can be detected using\n      // the first bit of the `SigFlags` integer (see Table 219 in the\n      // specification).\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasOnlyDocumentSignatures =\n        !!(sigFlags & 0x1) && this._hasOnlyDocumentSignatures(fields);\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch form information.\");\n    }\n    return shadow(this, \"formInfo\", formInfo);\n  }\n\n  get documentInfo() {\n    const DocumentInfoValidators = {\n      Title: isString,\n      Author: isString,\n      Subject: isString,\n      Keywords: isString,\n      Creator: isString,\n      Producer: isString,\n      CreationDate: isString,\n      ModDate: isString,\n      Trapped: isName,\n    };\n\n    let version = this._version;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n\n    if (isDict(infoDict)) {\n      // Fill the document info with valid entries from the specification,\n      // as well as any existing well-formed custom entries.\n      for (const key of infoDict.getKeys()) {\n        const value = infoDict.get(key);\n\n        if (DocumentInfoValidators[key]) {\n          // Make sure the (standard) value conforms to the specification.\n          if (DocumentInfoValidators[key](value)) {\n            docInfo[key] =\n              typeof value !== \"string\" ? value : stringToPDFString(value);\n          } else {\n            info(`Bad value in document info for \"${key}\".`);\n          }\n        } else if (typeof key === \"string\") {\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          if (isString(value)) {\n            customValue = stringToPDFString(value);\n          } else if (isName(value) || isNum(value) || isBool(value)) {\n            customValue = value;\n          } else {\n            info(`Unsupported value in document info for (custom) \"${key}\".`);\n            continue;\n          }\n\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n        }\n      }\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprint() {\n    let hash;\n    const idArray = this.xref.trailer.get(\"ID\");\n    if (\n      Array.isArray(idArray) &&\n      idArray[0] &&\n      isString(idArray[0]) &&\n      idArray[0] !== EMPTY_FINGERPRINT\n    ) {\n      hash = stringToBytes(idArray[0]);\n    } else {\n      hash = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    const fingerprintBuf = [];\n    for (let i = 0, ii = hash.length; i < ii; i++) {\n      const hex = hash[i].toString(16);\n      fingerprintBuf.push(hex.padStart(2, \"0\"));\n    }\n    return shadow(this, \"fingerprint\", fingerprintBuf.join(\"\"));\n  }\n\n  _getLinearizationPage(pageIndex) {\n    const { catalog, linearization } = this;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        linearization && linearization.pageFirst === pageIndex,\n        \"_getLinearizationPage - invalid pageIndex argument.\"\n      );\n    }\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    return this.xref\n      .fetchAsync(ref)\n      .then(obj => {\n        // Ensure that the object that was found is actually a Page dictionary.\n        if (\n          isDict(obj, \"Page\") ||\n          (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n        ) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          return [obj, ref];\n        }\n        throw new FormatError(\n          \"The Linearization dictionary doesn't point \" +\n            \"to a valid Page dictionary.\"\n        );\n      })\n      .catch(reason => {\n        info(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n  }\n\n  getPage(pageIndex) {\n    if (this._pagePromises[pageIndex] !== undefined) {\n      return this._pagePromises[pageIndex];\n    }\n    const { catalog, linearization } = this;\n\n    const promise =\n      linearization && linearization.pageFirst === pageIndex\n        ? this._getLinearizationPage(pageIndex)\n        : catalog.getPageDict(pageIndex);\n\n    return (this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        globalImageCache: catalog.globalImageCache,\n      });\n    }));\n  }\n\n  checkFirstPage() {\n    return this.getPage(0).catch(async reason => {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.length = 0;\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    });\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog\n      ? this.catalog.cleanup(manuallyTriggered)\n      : clearPrimitiveCaches();\n  }\n}\n\nexport { Page, PDFDocument };\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  createPromiseCapability,\n  createValidAbsoluteUrl,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isBool,\n  isNum,\n  isString,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  MissingDataException,\n  toRomanNumerals,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\n\nfunction fetchDestination(dest) {\n  return isDict(dest) ? dest.get(\"D\") : dest;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this._catDict = xref.getCatalogObj();\n    if (!isDict(this._catDict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n  }\n\n  get version() {\n    const version = this._catDict.get(\"Version\");\n    if (!isName(version)) {\n      return shadow(this, \"version\", null);\n    }\n    return shadow(this, \"version\", version.name);\n  }\n\n  get collection() {\n    let collection = null;\n    try {\n      const obj = this._catDict.get(\"Collection\");\n      if (isDict(obj) && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n    return shadow(this, \"collection\", collection);\n  }\n\n  get acroForm() {\n    let acroForm = null;\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n      if (isDict(obj) && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n    return shadow(this, \"acroForm\", acroForm);\n  }\n\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n    if (!isRef(streamRef)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    const suppressEncryption = !(\n      this.xref.encrypt && this.xref.encrypt.encryptMetadata\n    );\n    const stream = this.xref.fetch(streamRef, suppressEncryption);\n    let metadata;\n\n    if (stream && isDict(stream.dict)) {\n      const type = stream.dict.get(\"Type\");\n      const subtype = stream.dict.get(\"Subtype\");\n\n      if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n        // XXX: This should examine the charset the XML document defines,\n        // however since there are currently no real means to decode\n        // arbitrary charsets, let's just hope that the author of the PDF\n        // was reasonable enough to stick with the XML default charset,\n        // which is UTF-8.\n        try {\n          metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n        } catch (e) {\n          if (e instanceof MissingDataException) {\n            throw e;\n          }\n          info(\"Skipping invalid metadata.\");\n        }\n      }\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n    if (!isDict(pagesObj)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get optionalContentConfig() {\n    let config = null;\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n      if (!properties) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const defaultConfig = properties.get(\"D\");\n      if (!defaultConfig) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupsData = properties.get(\"OCGs\");\n      if (!Array.isArray(groupsData)) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groups = [];\n      const groupRefs = [];\n      // Ensure all the optional content groups are valid.\n      for (const groupRef of groupsData) {\n        if (!isRef(groupRef)) {\n          continue;\n        }\n        groupRefs.push(groupRef);\n        const group = this.xref.fetchIfRef(groupRef);\n        groups.push({\n          id: groupRef.toString(),\n          name: isString(group.get(\"Name\"))\n            ? stringToPDFString(group.get(\"Name\"))\n            : null,\n          intent: isString(group.get(\"Intent\"))\n            ? stringToPDFString(group.get(\"Intent\"))\n            : null,\n        });\n      }\n      config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n      config.groups = groups;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Unable to read optional content config: ${ex}`);\n    }\n    return shadow(this, \"optionalContentConfig\", config);\n  }\n\n  _readOptionalContentConfig(config, contentGroupRefs) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!isRef(value)) {\n            continue;\n          }\n          if (contentGroupRefs.includes(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n      return onParsed;\n    }\n\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n      const order = [];\n\n      for (const value of refs) {\n        if (isRef(value) && contentGroupRefs.includes(value)) {\n          parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n          order.push(value.toString());\n          continue;\n        }\n        // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n\n      if (nestedLevels > 0) {\n        return order;\n      }\n      const hiddenGroups = [];\n      for (const groupRef of contentGroupRefs) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n        hiddenGroups.push(groupRef.toString());\n      }\n      if (hiddenGroups.length) {\n        order.push({ name: null, order: hiddenGroups });\n      }\n\n      return order;\n    }\n\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n      const value = xref.fetchIfRef(ref);\n      if (!Array.isArray(value)) {\n        return null;\n      }\n      const nestedName = xref.fetchIfRef(value[0]);\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\n    }\n\n    const xref = this.xref,\n      parsedOrderRefs = new RefSet(),\n      MAX_NESTED_LEVELS = 10;\n\n    return {\n      name: isString(config.get(\"Name\"))\n        ? stringToPDFString(config.get(\"Name\"))\n        : null,\n      creator: isString(config.get(\"Creator\"))\n        ? stringToPDFString(config.get(\"Creator\"))\n        : null,\n      baseState: isName(config.get(\"BaseState\"))\n        ? config.get(\"BaseState\").name\n        : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: null,\n    };\n  }\n\n  get numPages() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"numPages\", obj);\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      const names = obj.getAll();\n      for (const name in names) {\n        dests[name] = fetchDestination(names[name]);\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function (key, value) {\n        if (value) {\n          dests[key] = fetchDestination(value);\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(destinationId) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree || obj instanceof Dict) {\n      return fetchDestination(obj.get(destinationId) || null);\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this._catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      if (i in nums) {\n        const labelDict = nums[i];\n        if (!isDict(labelDict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!isName(s)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (!isString(p)) {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const ViewerPreferencesValidators = {\n      HideToolbar: isBool,\n      HideMenubar: isBool,\n      HideWindowUI: isBool,\n      FitWindow: isBool,\n      CenterWindow: isBool,\n      DisplayDocTitle: isBool,\n      NonFullScreenPageMode: isName,\n      Direction: isName,\n      ViewArea: isName,\n      ViewClip: isName,\n      PrintArea: isName,\n      PrintClip: isName,\n      PrintScaling: isName,\n      Duplex: isName,\n      PickTrayByPDFSize: isBool,\n      PrintPageRange: Array.isArray,\n      NumCopies: Number.isInteger,\n    };\n\n    const obj = this._catDict.get(\"ViewerPreferences\");\n    let prefs = null;\n\n    if (isDict(obj)) {\n      for (const key in ViewerPreferencesValidators) {\n        if (!obj.has(key)) {\n          continue;\n        }\n        const value = obj.get(key);\n        // Make sure the (standard) value conforms to the specification.\n        if (!ViewerPreferencesValidators[key](value)) {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n          continue;\n        }\n        let prefValue;\n\n        switch (key) {\n          case \"NonFullScreenPageMode\":\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n            break;\n          case \"Direction\":\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n            break;\n          case \"ViewArea\":\n          case \"ViewClip\":\n          case \"PrintArea\":\n          case \"PrintClip\":\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n            break;\n          case \"PrintScaling\":\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n            break;\n          case \"Duplex\":\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n            break;\n          case \"PrintPageRange\":\n            const length = value.length;\n            if (length % 2 !== 0) {\n              // The number of elements must be even.\n              break;\n            }\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n            break;\n          case \"NumCopies\":\n            if (value > 0) {\n              prefValue = value;\n            }\n            break;\n          default:\n            if (typeof value !== \"boolean\") {\n              throw new FormatError(\n                `viewerPreferences - expected a boolean value for: ${key}`\n              );\n            }\n            prefValue = value;\n        }\n\n        if (prefValue !== undefined) {\n          if (!prefs) {\n            prefs = Object.create(null);\n          }\n          prefs[key] = prefValue;\n        } else {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n        }\n      }\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  /**\n   * NOTE: \"JavaScript\" actions are, for now, handled by `get javaScript` below.\n   */\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n    let openAction = null;\n\n    if (isDict(obj)) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        if (!openAction) {\n          openAction = Object.create(null);\n        }\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      if (!openAction) {\n        openAction = Object.create(null);\n      }\n      openAction.dest = obj;\n    }\n    return shadow(this, \"openAction\", openAction);\n  }\n\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        const fs = new FileSpec(names[name], this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(name)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get javaScript() {\n    const obj = this._catDict.get(\"Names\");\n\n    let javaScript = null;\n    function appendIfJavaScriptDict(jsDict) {\n      const type = jsDict.get(\"S\");\n      if (!isName(type, \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (isStream(js)) {\n        js = bytesToString(js.getBytes());\n      } else if (!isString(js)) {\n        return;\n      }\n\n      if (!javaScript) {\n        javaScript = [];\n      }\n      javaScript.push(stringToPDFString(js));\n    }\n\n    if (obj && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        // We don't use most JavaScript in PDF documents. This code is\n        // defensive so we don't cause errors on document load.\n        const jsDict = names[name];\n        if (isDict(jsDict)) {\n          appendIfJavaScriptDict(jsDict);\n        }\n      }\n    }\n\n    // Append OpenAction \"JavaScript\" actions to the JavaScript array.\n    const openAction = this._catDict.get(\"OpenAction\");\n    if (isDict(openAction) && isName(openAction.get(\"S\"), \"JavaScript\")) {\n      appendIfJavaScriptDict(openAction);\n    }\n\n    return shadow(this, \"javaScript\", javaScript);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    clearPrimitiveCaches();\n    this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n    this.pageKidsCountCache.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.translated;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this._catDict.getRaw(\"Pages\")];\n    const visitedNodes = new RefSet();\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache;\n    let count,\n      currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (isRef(currentNode)) {\n          count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count > 0 && currentPageIndex + count < pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n          // Prevent circular references in the /Pages tree.\n          if (visitedNodes.has(currentNode)) {\n            capability.reject(\n              new FormatError(\"Pages tree contains circular reference.\")\n            );\n            return;\n          }\n          visitedNodes.put(currentNode);\n\n          xref.fetchAsync(currentNode).then(function (obj) {\n            if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n              if (pageIndex === currentPageIndex) {\n                // Cache the Page reference, since it can *greatly* improve\n                // performance by reducing redundant lookups in long documents\n                // where all nodes are found at *one* level of the tree.\n                if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                  pageKidsCountCache.put(currentNode, 1);\n                }\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!isDict(currentNode)) {\n          capability.reject(\n            new FormatError(\n              \"Page dictionary kid reference points to wrong type of object.\"\n            )\n          );\n          return;\n        }\n\n        count = currentNode.get(\"Count\");\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        const kids = currentNode.get(\"Kids\");\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          if (\n            isName(currentNode.get(\"Type\"), \"Page\") ||\n            (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n          ) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(\n            new FormatError(\"Page dictionary kids object is not an array.\")\n          );\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  getPageIndex(pageRef) {\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function (node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!isDict(node)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!isDict(parent)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!isRef(kid)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function (obj) {\n                if (!isDict(obj)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (obj.has(\"Count\")) {\n                  total += obj.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    function next(ref) {\n      return pagesBeforeRef(ref).then(function (args) {\n        if (!args) {\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n    }\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n    function addDefaultProtocolToUrl(url) {\n      return url.startsWith(\"www.\") ? `http://${url}` : url;\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 Bugzilla 1122280.\n    function tryConvertUrlEncoding(url) {\n      try {\n        return stringToUTF8String(url);\n      } catch (e) {\n        return url;\n      }\n    }\n\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!isDict(action) && destDict.has(\"Dest\")) {\n      // A /Dest entry should *only* contain a Name or an Array, but some bad\n      // PDF generators ignore that and treat it as an /A entry.\n      action = destDict.get(\"Dest\");\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get(\"S\");\n      if (!isName(actionType)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (isName(url)) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          } else if (isString(url)) {\n            url = addDefaultProtocolToUrl(url);\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split(\"#\")[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (isStream(jsAction)) {\n            js = bytesToString(jsAction.getBytes());\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          if (js) {\n            // Attempt to recover valid URLs from `JS` entries with certain\n            // white-listed formats:\n            //  - window.open('http://example.com')\n            //  - app.launchURL('http://example.com', true)\n            const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\"];\n            const regex = new RegExp(\n              \"^\\\\s*(\" +\n                URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n                \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n              \"i\"\n            );\n\n            const jsUrl = regex.exec(stringToPDFString(js));\n            if (jsUrl && jsUrl[2]) {\n              url = jsUrl[2];\n\n              if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n                resultObj.newWindow = true;\n              }\n              break;\n            }\n          }\n        /* falls through */\n        default:\n          warn(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (isString(url)) {\n      url = tryConvertUrlEncoding(url);\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nvar XRef = (function XRefClosure() {\n  // eslint-disable-next-line no-shadow\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this.stats = {\n      streamTypes: Object.create(null),\n      fontTypes: Object.create(null),\n    };\n    this._newRefNum = null;\n  }\n\n  XRef.prototype = {\n    getNewRef: function XRef_getNewRef() {\n      if (this._newRefNum === null) {\n        this._newRefNum = this.entries.length;\n      }\n      return Ref.get(this._newRefNum++, 0);\n    },\n\n    resetNewRef: function XRef_resetNewRef() {\n      this._newRefNum = null;\n    },\n\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      // Store the starting positions of xref tables as we process them\n      // so we can recover from missing data errors\n      this.startXRefQueue = [startXRef];\n    },\n\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        warn(\"Indexing all PDF objects\");\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n\n      let encrypt;\n      try {\n        encrypt = trailerDict.get(\"Encrypt\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n      }\n      if (isDict(encrypt)) {\n        var ids = trailerDict.get(\"ID\");\n        var fileId = ids && ids.length ? ids[0] : \"\";\n        // The 'Encrypt' dictionary itself should not be encrypted, and by\n        // setting `suppressEncryption` we can prevent an infinite loop inside\n        // of `XRef_fetchUncompressed` if the dictionary contains indirect\n        // objects (fixes issue7665.pdf).\n        encrypt.suppressEncryption = true;\n        this.encrypt = new CipherTransformFactory(\n          encrypt,\n          fileId,\n          this.pdfManager.password\n        );\n      }\n\n      // Get the root dictionary (catalog) object, and do some basic validation.\n      let root;\n      try {\n        root = trailerDict.get(\"Root\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n      }\n      if (isDict(root) && root.has(\"Pages\")) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new XRefParseException();\n        }\n        throw new FormatError(\"Invalid root reference\");\n      }\n    },\n\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!(\"tableState\" in this)) {\n        // Stores state of the table as we process it so we can resume\n        // from middle of table in case of missing data error\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2,\n        };\n      }\n\n      var obj = this.readXRefTable(parser);\n\n      // Sanity check\n      if (!isCmd(obj, \"trailer\")) {\n        throw new FormatError(\n          \"Invalid XRef table: could not find trailer dictionary\"\n        );\n      }\n      // Read trailer dictionary, e.g.\n      // trailer\n      //    << /Size 22\n      //      /Root 20R\n      //      /Info 10R\n      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n      //    >>\n      // The parser goes through the entire stream << ... >> and provides\n      // a getter interface for the key-value table\n      var dict = parser.getObj();\n\n      // The pdflib PDF generator can generate a nested trailer dictionary\n      if (!isDict(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!isDict(dict)) {\n        throw new FormatError(\n          \"Invalid XRef table: could not parse trailer dictionary\"\n        );\n      }\n      delete this.tableState;\n\n      return dict;\n    },\n\n    readXRefTable: function XRef_readXRefTable(parser) {\n      // Example of cross-reference table:\n      // xref\n      // 0 1                    <-- subsection header (first obj #, obj count)\n      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n      // 23 2                   <-- subsection header ... and so on ...\n      // 0000025518 00002 n\n      // 0000025635 00000 n\n      // trailer\n      // ...\n\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n\n      // Outer loop is over subsection headers\n      var obj;\n\n      while (true) {\n        if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n          if (isCmd((obj = parser.getObj()), \"trailer\")) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new FormatError(\n            \"Invalid XRef table: wrong types in subsection header\"\n          );\n        }\n        // Inner loop is over objects themselves\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n\n          if (type instanceof Cmd) {\n            switch (type.cmd) {\n              case \"f\":\n                entry.free = true;\n                break;\n              case \"n\":\n                entry.uncompressed = true;\n                break;\n            }\n          }\n\n          // Validate entry obj\n          if (\n            !Number.isInteger(entry.offset) ||\n            !Number.isInteger(entry.gen) ||\n            !(entry.free || entry.uncompressed)\n          ) {\n            throw new FormatError(\n              `Invalid entry in XRef subsection: ${first}, ${count}`\n            );\n          }\n\n          // The first xref table entry, i.e. obj 0, should be free. Attempting\n          // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n\n      // Sanity check: as per spec, first object must be free\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new FormatError(\"Invalid XRef table: unexpected first object\");\n      }\n      return obj;\n    },\n\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!(\"streamState\" in this)) {\n        // Stores state of the stream as we process it so we can resume\n        // from middle of stream in case of missing data error\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get(\"W\");\n        var range = streamParameters.get(\"Index\");\n        if (!range) {\n          range = [0, streamParameters.get(\"Size\")];\n        }\n\n        this.streamState = {\n          entryRanges: range,\n          byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos,\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n\n      return stream.dict;\n    },\n\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n        }\n        if (\n          !Number.isInteger(typeFieldWidth) ||\n          !Number.isInteger(offsetFieldWidth) ||\n          !Number.isInteger(generationFieldWidth)\n        ) {\n          throw new FormatError(\n            `Invalid XRef entry fields length: ${first}, ${n}`\n          );\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n\n          var type = 0,\n            offset = 0,\n            generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = (type << 8) | stream.getByte();\n          }\n          // if type field is absent, its default value is 1\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = (offset << 8) | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = (generation << 8) | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new FormatError(`Invalid XRef entry type: ${type}`);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n\n    indexObjects: function XRef_indexObjects() {\n      // Simple scan through the PDF content to find objects,\n      // trailers and XRef streams.\n      var TAB = 0x9,\n        LF = 0xa,\n        CR = 0xd,\n        SPACE = 0x20;\n      var PERCENT = 0x25,\n        LT = 0x3c;\n\n      function readToken(data, offset) {\n        var token = \"\",\n          ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length,\n          dataLength = data.length;\n        var skipped = 0;\n        // finding byte sequence\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break; // sequence found\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      const endobjRegExp = /\\bendobj[\\b\\s]$/;\n      const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n      const CHECK_CONTENT_LENGTH = 25;\n\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      // prettier-ignore\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n                                           101, 102]);\n      const objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n      // Clear out any existing entries, since they may be bogus.\n      this.entries.length = 0;\n\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start,\n        length = buffer.length;\n      var trailers = [],\n        xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) {\n          // %-comment\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (\n          token.startsWith(\"xref\") &&\n          (token.length === 4 || /\\s/.test(token[4]))\n        ) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if ((m = objRegExp.exec(token))) {\n          const num = m[1] | 0,\n            gen = m[2] | 0;\n          if (!this.entries[num] || this.entries[num].gen === gen) {\n            this.entries[num] = {\n              offset: position - stream.start,\n              gen,\n              uncompressed: true,\n            };\n          }\n          let contentLength,\n            startPos = position + token.length;\n\n          // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n          // we won't skip over a new 'obj' operator in corrupt files where\n          // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n          while (startPos < buffer.length) {\n            const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n\n            const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n            // Check if the current object ends with an 'endobj' operator.\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              // Check if an \"obj\" occurrence is actually a new object,\n              // i.e. the current object is missing the 'endobj' operator.\n              const objToken = nestedObjRegExp.exec(tokenStr);\n\n              if (objToken && objToken[1]) {\n                warn(\n                  'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                    'caused by missing \"endobj\" -- trying to recover.'\n                );\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          const content = buffer.subarray(position, position + contentLength);\n\n          // checking XRef stream suspect\n          // (it shall have '/XRef' and next char is not a letter)\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (\n            xrefTagOffset < contentLength &&\n            content[xrefTagOffset + 5] < 64\n          ) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1; // Avoid recursion\n          }\n\n          position += contentLength;\n        } else if (\n          token.startsWith(\"trailer\") &&\n          (token.length === 7 || /\\s/.test(token[7]))\n        ) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      // reading XRef streams\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(/* recoveryMode */ true);\n      }\n      // finding main trailer\n      let trailerDict;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n          recoveryMode: true,\n        });\n        var obj = parser.getObj();\n        if (!isCmd(obj, \"trailer\")) {\n          continue;\n        }\n        // read the trailer dictionary\n        const dict = parser.getObj();\n        if (!isDict(dict)) {\n          continue;\n        }\n        // Do some basic validation of the trailer/root dictionary candidate.\n        let rootDict;\n        try {\n          rootDict = dict.get(\"Root\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!isDict(rootDict) || !rootDict.has(\"Pages\")) {\n          continue;\n        }\n        // taking the first one with 'ID'\n        if (dict.has(\"ID\")) {\n          return dict;\n        }\n        // The current dictionary is a candidate, but continue searching.\n        trailerDict = dict;\n      }\n      // No trailer with 'ID', taking last one (if exists).\n      if (trailerDict) {\n        return trailerDict;\n      }\n      // nothing helps\n      throw new InvalidPDFException(\"Invalid PDF structure.\");\n    },\n\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      // Keep track of already parsed XRef tables, to prevent an infinite loop\n      // when parsing corrupt PDF files where e.g. the /Prev entries create a\n      // circular dependency between tables (fixes bug1393476.pdf).\n      const startXRefParsedCache = Object.create(null);\n\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n\n          if (startXRefParsedCache[startXRef]) {\n            warn(\"readXRef - skipping XRef table since it was already parsed.\");\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n\n          stream.pos = startXRef + stream.start;\n\n          const parser = new Parser({\n            lexer: new Lexer(stream),\n            xref: this,\n            allowStreams: true,\n          });\n          var obj = parser.getObj();\n          var dict;\n\n          // Get dictionary\n          if (isCmd(obj, \"xref\")) {\n            // Parse end-of-file XRef\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n\n            // Recursively get other XRefs 'XRefStm', if any\n            obj = dict.get(\"XRefStm\");\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              // ignore previously loaded xref streams\n              // (possible infinite recursion)\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            // Parse in-stream XRef\n            if (\n              !Number.isInteger(parser.getObj()) ||\n              !isCmd(parser.getObj(), \"obj\") ||\n              !isStream((obj = parser.getObj()))\n            ) {\n              throw new FormatError(\"Invalid XRef stream\");\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new FormatError(\"Failed to read XRef stream\");\n            }\n          } else {\n            throw new FormatError(\"Invalid XRef stream header\");\n          }\n\n          // Recursively get previous dictionary, if any\n          obj = dict.get(\"Prev\");\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if (isRef(obj)) {\n            // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n            // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n            this.startXRefQueue.push(obj.num);\n          }\n\n          this.startXRefQueue.shift();\n        }\n\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info(\"(while reading XRef): \" + e);\n      }\n\n      if (recoveryMode) {\n        return undefined;\n      }\n      throw new XRefParseException();\n    },\n\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetch(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!(ref instanceof Ref)) {\n        throw new Error(\"ref object is not a reference\");\n      }\n      const num = ref.num;\n\n      // The XRef cache is populated with objects which are obtained through\n      // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n      // methods should ever return `undefined` (note the `assert` calls below).\n      const cacheEntry = this._cacheMap.get(num);\n      if (cacheEntry !== undefined) {\n        // In documents with Object Streams, it's possible that cached `Dict`s\n        // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n        if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n      let xrefEntry = this.getEntry(num);\n\n      if (xrefEntry === null) {\n        // The referenced entry can be free.\n        this._cacheMap.set(num, xrefEntry);\n        return xrefEntry;\n      }\n\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      if (isDict(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if (isStream(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n\n    fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n      }\n      var stream = this.stream.makeSubStream(\n        xrefEntry.offset + this.stream.start\n      );\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n\n      if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (obj3.cmd !== \"obj\") {\n        // some bad PDFs use \"obj1234\" and really mean 1234\n        if (obj3.cmd.startsWith(\"obj\")) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!isStream(xrefEntry)) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            xrefEntry !== undefined,\n            'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, xrefEntry);\n      }\n      return xrefEntry;\n    },\n\n    fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n      const tableOffset = xrefEntry.offset;\n      const stream = this.fetch(Ref.get(tableOffset, 0));\n      if (!isStream(stream)) {\n        throw new FormatError(\"bad ObjStm stream\");\n      }\n      const first = stream.dict.get(\"First\");\n      const n = stream.dict.get(\"N\");\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(\n          \"invalid first and n parameters for ObjStm stream\"\n        );\n      }\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n      });\n      const nums = new Array(n);\n      // read the object numbers to populate cache\n      for (let i = 0; i < n; ++i) {\n        const num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new FormatError(\n            `invalid object number in the ObjStm stream: ${num}`\n          );\n        }\n        const offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new FormatError(\n            `invalid object offset in the ObjStm stream: ${offset}`\n          );\n        }\n        nums[i] = num;\n      }\n      const entries = new Array(n);\n      // read stream objects for cache\n      for (let i = 0; i < n; ++i) {\n        const obj = parser.getObj();\n        entries[i] = obj;\n        // The ObjStm should not contain 'endobj'. If it's present, skip over it\n        // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n        if (parser.buf1 instanceof Cmd && parser.buf1.cmd === \"endobj\") {\n          parser.shift();\n        }\n        if (isStream(obj)) {\n          continue;\n        }\n        const num = nums[i],\n          entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              obj !== undefined,\n              'fetchCompressed: The \"obj\" cannot be undefined.'\n            );\n          }\n          this._cacheMap.set(num, obj);\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n      }\n      return xrefEntry;\n    },\n\n    async fetchIfRefAsync(obj, suppressEncryption) {\n      if (obj instanceof Ref) {\n        return this.fetchAsync(obj, suppressEncryption);\n      }\n      return obj;\n    },\n\n    async fetchAsync(ref, suppressEncryption) {\n      try {\n        return this.fetch(ref, suppressEncryption);\n      } catch (ex) {\n        if (!(ex instanceof MissingDataException)) {\n          throw ex;\n        }\n        await this.pdfManager.requestRange(ex.begin, ex.end);\n        return this.fetchAsync(ref, suppressEncryption);\n      }\n    },\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    },\n  };\n\n  return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const dict = Object.create(null);\n    if (!this.root) {\n      return dict;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (Array.isArray(entries)) {\n        for (let i = 0, ii = entries.length; i < ii; i += 2) {\n          dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n        }\n      }\n    }\n    return dict;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n\n      // Fallback to an exhaustive search, in an attempt to handle corrupt\n      // PDF files where keys are not correctly ordered (fixes issue 10272).\n      info(\n        `Falling back to an exhaustive search, for key \"${key}\", ` +\n          `in \"${this._type}\" tree.`\n      );\n      for (let m = 0, mm = entries.length; m < mm; m += 2) {\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (currentKey === key) {\n          warn(\n            `The \"${key}\" key was found at an incorrect, ` +\n              `i.e. out-of-order, position in \"${this._type}\" tree.`\n          );\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n  // eslint-disable-next-line no-shadow\n  function FileSpec(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  function pickPlatformItem(dict) {\n    // Look for the filename in this order:\n    // UF, F, Unix, Mac, DOS\n    if (dict.has(\"UF\")) {\n      return dict.get(\"UF\");\n    } else if (dict.has(\"F\")) {\n      return dict.get(\"F\");\n    } else if (dict.has(\"Unix\")) {\n      return dict.get(\"Unix\");\n    } else if (dict.has(\"Mac\")) {\n      return dict.get(\"Mac\");\n    } else if (dict.has(\"DOS\")) {\n      return dict.get(\"DOS\");\n    }\n    return null;\n  }\n\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || \"unnamed\";\n        this._filename = stringToPDFString(filename)\n          .replace(/\\\\\\\\/g, \"\\\\\")\n          .replace(/\\\\\\//g, \"/\")\n          .replace(/\\\\/g, \"/\");\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && isStream(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          warn(\n            \"Embedded file specification points to non-existing/invalid \" +\n              \"content\"\n          );\n        }\n      } else {\n        warn(\"Embedded file specification does not have a content\");\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content,\n      };\n    },\n  };\n  return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nconst ObjectLoader = (function () {\n  function mayHaveChildren(value) {\n    return (\n      value instanceof Ref ||\n      value instanceof Dict ||\n      Array.isArray(value) ||\n      isStream(value)\n    );\n  }\n\n  function addChildren(node, nodesToVisit) {\n    if (node instanceof Dict) {\n      node = node.getRawValues();\n    } else if (isStream(node)) {\n      node = node.dict.getRawValues();\n    } else if (!Array.isArray(node)) {\n      return;\n    }\n    for (const rawValue of node) {\n      if (mayHaveChildren(rawValue)) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  ObjectLoader.prototype = {\n    async load() {\n      // Don't walk the graph if all the data is already loaded; note that only\n      // `ChunkedStream` instances have a `allChunksLoaded` method.\n      if (\n        !this.xref.stream.allChunksLoaded ||\n        this.xref.stream.allChunksLoaded()\n      ) {\n        return undefined;\n      }\n\n      const { keys, dict } = this;\n      this.refSet = new RefSet();\n      // Setup the initial nodes to visit.\n      const nodesToVisit = [];\n      for (let i = 0, ii = keys.length; i < ii; i++) {\n        const rawValue = dict.getRaw(keys[i]);\n        // Skip nodes that are guaranteed to be empty.\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n      return this._walk(nodesToVisit);\n    },\n\n    async _walk(nodesToVisit) {\n      const nodesToRevisit = [];\n      const pendingRequests = [];\n      // DFS walk of the object graph.\n      while (nodesToVisit.length) {\n        let currentNode = nodesToVisit.pop();\n\n        // Only references or chunked streams can cause missing data exceptions.\n        if (currentNode instanceof Ref) {\n          // Skip nodes that have already been visited.\n          if (this.refSet.has(currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(currentNode);\n            currentNode = this.xref.fetch(currentNode);\n          } catch (ex) {\n            if (!(ex instanceof MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(currentNode);\n            pendingRequests.push({ begin: ex.begin, end: ex.end });\n          }\n        }\n        if (currentNode && currentNode.getBaseStreams) {\n          const baseStreams = currentNode.getBaseStreams();\n          let foundMissingData = false;\n          for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n            const stream = baseStreams[i];\n            if (stream.allChunksLoaded && !stream.allChunksLoaded()) {\n              foundMissingData = true;\n              pendingRequests.push({ begin: stream.start, end: stream.end });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n\n        addChildren(currentNode, nodesToVisit);\n      }\n\n      if (pendingRequests.length) {\n        await this.xref.stream.manager.requestRanges(pendingRequests);\n\n        for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n          const node = nodesToRevisit[i];\n          // Remove any reference nodes from the current `RefSet` so they\n          // aren't skipped when we revist them.\n          if (node instanceof Ref) {\n            this.refSet.remove(node);\n          }\n        }\n        return this._walk(nodesToRevisit);\n      }\n      // Everything is loaded.\n      this.refSet = null;\n      return undefined;\n    },\n  };\n\n  return ObjectLoader;\n})();\n\nexport { Catalog, ObjectLoader, XRef, FileSpec };\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/* eslint no-var: error */\n\nimport {\n  Ascii85Stream,\n  AsciiHexStream,\n  FlateStream,\n  LZWStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n} from \"./stream.js\";\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  isNum,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isEOF,\n  isName,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport { isWhiteSpace, MissingDataException } from \"./core_utils.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && !isEOF(this.buf1)) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside array\");\n            }\n            return array;\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && !isEOF(this.buf1)) {\n            if (!isName(this.buf1)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (isEOF(this.buf1)) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (isEOF(this.buf1)) {\n            if (!this.recoveryMode) {\n              throw new FormatError(\"End of file inside dictionary\");\n            }\n            return dict;\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd,\n      NUL = 0x0;\n    const lexer = this.lexer,\n      startPos = stream.pos,\n      n = 10;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n\n          if (state !== 2) {\n            continue;\n          }\n          // Check that the \"EI\" sequence isn't part of the image data, since\n          // that would cause the image to be truncated (fixes issue11124.pdf).\n          if (lexer.knownCommands) {\n            const nextObj = lexer.peekObj();\n            if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n              // Not a valid command, i.e. the inline image data *itself*\n              // contains an \"EI\" sequence. Resetting the state.\n              state = 0;\n            }\n          } else {\n            warn(\n              \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n            );\n          }\n\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && !isEOF(this.buf1)) {\n      if (!isName(this.buf1)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (isEOF(this.buf1)) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"Filter\", \"F\");\n    let filterName;\n    if (isName(filter)) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (isName(filterZero)) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    if (filterName === \"DCTDecode\" || filterName === \"DCT\") {\n      length = this.findDCTDecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCII85Decode\" || filterName === \"A85\") {\n      length = this.findASCII85DecodeInlineStreamEnd(stream);\n    } else if (filterName === \"ASCIIHexDecode\" || filterName === \"AHx\") {\n      length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n    } else {\n      length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length}\" in stream`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      // prettier-ignore\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"Filter\", \"F\");\n    let params = dict.get(\"DecodeParms\", \"DP\");\n\n    if (isName(filter)) {\n      if (Array.isArray(params)) {\n        warn(\n          \"/DecodeParms should not contain an Array, \" +\n            \"when /Filter contains a Name.\"\n        );\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!isName(filter)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n\n    try {\n      const xrefStreamStats = this.xref.stats.streamTypes;\n      if (name === \"FlateDecode\" || name === \"Fl\") {\n        xrefStreamStats[StreamType.FLATE] = true;\n        if (params) {\n          return new PredictorStream(\n            new FlateStream(stream, maybeLength),\n            maybeLength,\n            params\n          );\n        }\n        return new FlateStream(stream, maybeLength);\n      }\n      if (name === \"LZWDecode\" || name === \"LZW\") {\n        xrefStreamStats[StreamType.LZW] = true;\n        let earlyChange = 1;\n        if (params) {\n          if (params.has(\"EarlyChange\")) {\n            earlyChange = params.get(\"EarlyChange\");\n          }\n          return new PredictorStream(\n            new LZWStream(stream, maybeLength, earlyChange),\n            maybeLength,\n            params\n          );\n        }\n        return new LZWStream(stream, maybeLength, earlyChange);\n      }\n      if (name === \"DCTDecode\" || name === \"DCT\") {\n        xrefStreamStats[StreamType.DCT] = true;\n        return new JpegStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"JPXDecode\" || name === \"JPX\") {\n        xrefStreamStats[StreamType.JPX] = true;\n        return new JpxStream(stream, maybeLength, stream.dict, params);\n      }\n      if (name === \"ASCII85Decode\" || name === \"A85\") {\n        xrefStreamStats[StreamType.A85] = true;\n        return new Ascii85Stream(stream, maybeLength);\n      }\n      if (name === \"ASCIIHexDecode\" || name === \"AHx\") {\n        xrefStreamStats[StreamType.AHX] = true;\n        return new AsciiHexStream(stream, maybeLength);\n      }\n      if (name === \"CCITTFaxDecode\" || name === \"CCF\") {\n        xrefStreamStats[StreamType.CCF] = true;\n        return new CCITTFaxStream(stream, maybeLength, params);\n      }\n      if (name === \"RunLengthDecode\" || name === \"RL\") {\n        xrefStreamStats[StreamType.RLX] = true;\n        return new RunLengthStream(stream, maybeLength);\n      }\n      if (name === \"JBIG2Decode\") {\n        xrefStreamStats[StreamType.JBIG] = true;\n        return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (\n        divideBy === 10 &&\n        sign === 0 &&\n        (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n      ) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n        return 0;\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObject` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  peekObj() {\n    const streamPos = this.stream.pos,\n      currentChar = this.currentChar,\n      beginInlineImagePos = this.beginInlineImagePos;\n\n    let nextObj;\n    try {\n      nextObj = this.getObj();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`peekObj: ${ex}`);\n    }\n    // Ensure that we reset *all* relevant `Lexer`-instance state.\n    this.stream.pos = streamPos;\n    this.currentChar = currentChar;\n    this.beginInlineImagePos = beginInlineImagePos;\n\n    return nextObj;\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        isDict(linDict) &&\n        isNum((obj = linDict.get(\"Linearized\"))) &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\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/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, stringToBytes, unreachable } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nvar Stream = (function StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        const subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      const subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange(begin, end) {\n      if (begin < 0) {\n        begin = 0;\n      }\n      if (end > this.end) {\n        end = this.end;\n      }\n      return this.bytes.subarray(begin, end);\n    },\n\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    },\n  };\n\n  return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StringStream(str) {\n    const bytes = stringToBytes(str);\n    Stream.call(this, bytes);\n  }\n\n  StringStream.prototype = Stream.prototype;\n\n  return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n  // Lots of DecodeStreams are created whose buffers are never used.  For these\n  // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n  // having special cases that would be required if we used |null| for an empty\n  // buffer.\n  var emptyBuffer = new Uint8Array(0);\n\n  // eslint-disable-next-line no-shadow\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return (this.buffer = buffer2);\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes(length, forceClamped = false) {\n      var end,\n        pos = this.pos;\n\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n\n      this.pos = end;\n      const subarray = this.buffer.subarray(pos, end);\n      // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n      return forceClamped && !(subarray instanceof Uint8ClampedArray)\n        ? new Uint8ClampedArray(subarray)\n        : subarray;\n    },\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      if (peekedByte !== -1) {\n        this.pos--;\n      }\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n\n    getByteRange(begin, end) {\n      unreachable(\"Should not call DecodeStream.getByteRange\");\n    },\n\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    },\n  };\n\n  return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n\n    let maybeLength = 0;\n    for (let i = 0, ii = streams.length; i < ii; i++) {\n      const stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n\n  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push(...stream.getBaseStreams());\n      }\n    }\n    return baseStreams;\n  };\n\n  return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n  // prettier-ignore\n  var codeLenCodeMap = new Int32Array([\n    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n  ]);\n\n  // prettier-ignore\n  var lengthDecode = new Int32Array([\n    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n  ]);\n\n  // prettier-ignore\n  var distDecode = new Int32Array([\n    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n  ]);\n\n  // prettier-ignore\n  var fixedLitCodeTab = [new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n  ]), 9];\n\n  // prettier-ignore\n  var fixedDistCodeTab = [new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n  ]), 5];\n\n  // eslint-disable-next-line no-shadow\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  };\n\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & ((1 << maxLen) - 1)];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  };\n\n  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(\n    lengths\n  ) {\n    var n = lengths.length;\n\n    // find max code length\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (\n      var len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  };\n\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    // read block header\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      var b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n\n  return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function PredictorStream(str, maybeLength, params) {\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    var predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    var colors = (this.colors = params.get(\"Colors\") || 1);\n    var bits = (this.bits = params.get(\"BitsPerComponent\") || 8);\n    var columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var bits = this.bits;\n    var colors = this.colors;\n\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var inbuf = 0,\n      outbuf = 0;\n    var inbits = 0,\n      outbits = 0;\n    var pos = bufferLength;\n    var i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0,\n        k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    var i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  return PredictorStream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  var chunkSize = 512;\n\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    var bufferLength = this.bufferLength;\n    var i,\n      n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7e; // '~'\n    var Z_LOWER_CHAR = 0x7a; // 'z'\n    var EOF = -1;\n\n    var str = this.str;\n\n    var c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    var bufferLength = this.bufferLength,\n      buffer;\n    var i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  };\n\n  return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    var maxDecodeLength = (bytes.length + 1) >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i],\n        digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n\n  return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return RunLengthStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  };\n\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2,\n      decodedSizeDelta = blockSize;\n    var i, j, q;\n\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  };\n\n  return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n\n  NullStream.prototype = Stream.prototype;\n\n  return NullStream;\n})();\n\nexport {\n  Ascii85Stream,\n  AsciiHexStream,\n  DecryptStream,\n  DecodeStream,\n  FlateStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n  Stream,\n  StreamsSequenceStream,\n  StringStream,\n  LZWStream,\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 { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./stream.js\";\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n  CCITTFaxStream.prototype.readBlock = function () {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n\n  return CCITTFaxStream;\n})();\n\nexport { CCITTFaxStream };\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/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nimport { info } from \"../shared/util.js\";\n\nconst CCITTFaxDecoder = (function CCITTFaxDecoder() {\n  const ccittEOL = -2;\n  const ccittEOF = -1;\n  const twoDimPass = 0;\n  const twoDimHoriz = 1;\n  const twoDimVert0 = 2;\n  const twoDimVertR1 = 3;\n  const twoDimVertL1 = 4;\n  const twoDimVertR2 = 5;\n  const twoDimVertL2 = 6;\n  const twoDimVertR3 = 7;\n  const twoDimVertL3 = 8;\n\n  // prettier-ignore\n  const twoDimTable = [\n    [-1, -1], [-1, -1],                   // 000000x\n    [7, twoDimVertL3],                    // 0000010\n    [7, twoDimVertR3],                    // 0000011\n    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n    [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0]\n  ];\n\n  // prettier-ignore\n  const whiteTable1 = [\n    [-1, -1],                               // 00000\n    [12, ccittEOL],                         // 00001\n    [-1, -1], [-1, -1],                     // 0001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n    [11, 1792], [11, 1792],                 // 1000x\n    [12, 1984],                             // 10010\n    [12, 2048],                             // 10011\n    [12, 2112],                             // 10100\n    [12, 2176],                             // 10101\n    [12, 2240],                             // 10110\n    [12, 2304],                             // 10111\n    [11, 1856], [11, 1856],                 // 1100x\n    [11, 1920], [11, 1920],                 // 1101x\n    [12, 2368],                             // 11100\n    [12, 2432],                             // 11101\n    [12, 2496],                             // 11110\n    [12, 2560]                              // 11111\n  ];\n\n  // prettier-ignore\n  const whiteTable2 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n    [8, 29], [8, 29],                           // 00000010x\n    [8, 30], [8, 30],                           // 00000011x\n    [8, 45], [8, 45],                           // 00000100x\n    [8, 46], [8, 46],                           // 00000101x\n    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n    [8, 47], [8, 47],                           // 00001010x\n    [8, 48], [8, 48],                           // 00001011x\n    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n    [6, 13], [6, 13], [6, 13], [6, 13],\n    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n    [8, 33], [8, 33],                           // 00010010x\n    [8, 34], [8, 34],                           // 00010011x\n    [8, 35], [8, 35],                           // 00010100x\n    [8, 36], [8, 36],                           // 00010101x\n    [8, 37], [8, 37],                           // 00010110x\n    [8, 38], [8, 38],                           // 00010111x\n    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n    [8, 31], [8, 31],                           // 00011010x\n    [8, 32], [8, 32],                           // 00011011x\n    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n    [6, 1], [6, 1], [6, 1], [6, 1],\n    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n    [6, 12], [6, 12], [6, 12], [6, 12],\n    [8, 53], [8, 53],                           // 00100100x\n    [8, 54], [8, 54],                           // 00100101x\n    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n    [8, 39], [8, 39],                           // 00101000x\n    [8, 40], [8, 40],                           // 00101001x\n    [8, 41], [8, 41],                           // 00101010x\n    [8, 42], [8, 42],                           // 00101011x\n    [8, 43], [8, 43],                           // 00101100x\n    [8, 44], [8, 44],                           // 00101101x\n    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n    [8, 61], [8, 61],                           // 00110010x\n    [8, 62], [8, 62],                           // 00110011x\n    [8, 63], [8, 63],                           // 00110100x\n    [8, 0], [8, 0],                             // 00110101x\n    [8, 320], [8, 320],                         // 00110110x\n    [8, 384], [8, 384],                         // 00110111x\n    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n    [8, 59], [8, 59],                           // 01001010x\n    [8, 60], [8, 60],                           // 01001011x\n    [9, 1472],                                  // 010011000\n    [9, 1536],                                  // 010011001\n    [9, 1600],                                  // 010011010\n    [9, 1728],                                  // 010011011\n    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n    [8, 49], [8, 49],                           // 01010010x\n    [8, 50], [8, 50],                           // 01010011x\n    [8, 51], [8, 51],                           // 01010100x\n    [8, 52], [8, 52],                           // 01010101x\n    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n    [8, 55], [8, 55],                           // 01011000x\n    [8, 56], [8, 56],                           // 01011001x\n    [8, 57], [8, 57],                           // 01011010x\n    [8, 58], [8, 58],                           // 01011011x\n    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n    [6, 192], [6, 192], [6, 192], [6, 192],\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n    [8, 448], [8, 448],                         // 01100100x\n    [8, 512], [8, 512],                         // 01100101x\n    [9, 704],                                   // 011001100\n    [9, 768],                                   // 011001101\n    [8, 640], [8, 640],                         // 01100111x\n    [8, 576], [8, 576],                         // 01101000x\n    [9, 832],                                   // 011010010\n    [9, 896],                                   // 011010011\n    [9, 960],                                   // 011010100\n    [9, 1024],                                  // 011010101\n    [9, 1088],                                  // 011010110\n    [9, 1152],                                  // 011010111\n    [9, 1216],                                  // 011011000\n    [9, 1280],                                  // 011011001\n    [9, 1344],                                  // 011011010\n    [9, 1408],                                  // 011011011\n    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n    [6, 16], [6, 16], [6, 16], [6, 16],\n    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n    [6, 17], [6, 17], [6, 17], [6, 17],\n    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n    [6, 14], [6, 14], [6, 14], [6, 14],\n    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n    [6, 15], [6, 15], [6, 15], [6, 15],\n    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7]\n  ];\n\n  // prettier-ignore\n  const blackTable1 = [\n    [-1, -1], [-1, -1],                             // 000000000000x\n    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n    [12, 1984], [12, 1984],                         // 000000010010x\n    [12, 2048], [12, 2048],                         // 000000010011x\n    [12, 2112], [12, 2112],                         // 000000010100x\n    [12, 2176], [12, 2176],                         // 000000010101x\n    [12, 2240], [12, 2240],                         // 000000010110x\n    [12, 2304], [12, 2304],                         // 000000010111x\n    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n    [12, 2368], [12, 2368],                         // 000000011100x\n    [12, 2432], [12, 2432],                         // 000000011101x\n    [12, 2496], [12, 2496],                         // 000000011110x\n    [12, 2560], [12, 2560],                         // 000000011111x\n    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n    [10, 18], [10, 18], [10, 18], [10, 18],\n    [12, 52], [12, 52],                             // 000000100100x\n    [13, 640],                                      // 0000001001010\n    [13, 704],                                      // 0000001001011\n    [13, 768],                                      // 0000001001100\n    [13, 832],                                      // 0000001001101\n    [12, 55], [12, 55],                             // 000000100111x\n    [12, 56], [12, 56],                             // 000000101000x\n    [13, 1280],                                     // 0000001010010\n    [13, 1344],                                     // 0000001010011\n    [13, 1408],                                     // 0000001010100\n    [13, 1472],                                     // 0000001010101\n    [12, 59], [12, 59],                             // 000000101011x\n    [12, 60], [12, 60],                             // 000000101100x\n    [13, 1536],                                     // 0000001011010\n    [13, 1600],                                     // 0000001011011\n    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n    [13, 1664],                                     // 0000001100100\n    [13, 1728],                                     // 0000001100101\n    [12, 320], [12, 320],                           // 000000110011x\n    [12, 384], [12, 384],                           // 000000110100x\n    [12, 448], [12, 448],                           // 000000110101x\n    [13, 512],                                      // 0000001101100\n    [13, 576],                                      // 0000001101101\n    [12, 53], [12, 53],                             // 000000110111x\n    [12, 54], [12, 54],                             // 000000111000x\n    [13, 896],                                      // 0000001110010\n    [13, 960],                                      // 0000001110011\n    [13, 1024],                                     // 0000001110100\n    [13, 1088],                                     // 0000001110101\n    [13, 1152],                                     // 0000001110110\n    [13, 1216],                                     // 0000001110111\n    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n    [10, 64], [10, 64], [10, 64], [10, 64]\n  ];\n\n  // prettier-ignore\n  const blackTable2 = [\n    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [11, 23], [11, 23],                     // 00000101000x\n    [12, 50],                               // 000001010010\n    [12, 51],                               // 000001010011\n    [12, 44],                               // 000001010100\n    [12, 45],                               // 000001010101\n    [12, 46],                               // 000001010110\n    [12, 47],                               // 000001010111\n    [12, 57],                               // 000001011000\n    [12, 58],                               // 000001011001\n    [12, 61],                               // 000001011010\n    [12, 256],                              // 000001011011\n    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n    [12, 48],                               // 000001100100\n    [12, 49],                               // 000001100101\n    [12, 62],                               // 000001100110\n    [12, 63],                               // 000001100111\n    [12, 30],                               // 000001101000\n    [12, 31],                               // 000001101001\n    [12, 32],                               // 000001101010\n    [12, 33],                               // 000001101011\n    [12, 40],                               // 000001101100\n    [12, 41],                               // 000001101101\n    [11, 22], [11, 22],                     // 00000110111x\n    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n    [9, 15], [9, 15], [9, 15], [9, 15],\n    [12, 128],                              // 000011001000\n    [12, 192],                              // 000011001001\n    [12, 26],                               // 000011001010\n    [12, 27],                               // 000011001011\n    [12, 28],                               // 000011001100\n    [12, 29],                               // 000011001101\n    [11, 19], [11, 19],                     // 00001100111x\n    [11, 20], [11, 20],                     // 00001101000x\n    [12, 34],                               // 000011010010\n    [12, 35],                               // 000011010011\n    [12, 36],                               // 000011010100\n    [12, 37],                               // 000011010101\n    [12, 38],                               // 000011010110\n    [12, 39],                               // 000011010111\n    [11, 21], [11, 21],                     // 00001101100x\n    [12, 42],                               // 000011011010\n    [12, 43],                               // 000011011011\n    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12]\n  ];\n\n  // prettier-ignore\n  const blackTable3 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n    [6, 9],                                 // 000100\n    [6, 8],                                 // 000101\n    [5, 7], [5, 7],                         // 00011x\n    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n    [3, 1], [3, 1], [3, 1], [3, 1],\n    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n    [3, 4], [3, 4], [3, 4], [3, 4],\n    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2]\n  ];\n\n  /**\n   * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n   * @param {Object} [options] - Decoding options.\n   */\n  // eslint-disable-next-line no-shadow\n  function CCITTFaxDecoder(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  CCITTFaxDecoder.prototype = {\n    readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      const refLine = this.refLine;\n      const codingLine = this.codingLine;\n      const columns = this.columns;\n\n      let refPos, blackPixels, bits, i;\n\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n\n        let code1, code2, code3;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                }\n                this._addPixels(\n                  codingLine[this.codingPos] + code1,\n                  blackPixels\n                );\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(\n                    codingLine[this.codingPos] + code2,\n                    blackPixels ^ 1\n                  );\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (\n                    refLine[refPos] <= codingLine[this.codingPos] &&\n                    refLine[refPos] < columns\n                  ) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                info(\"bad 2d code\");\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += code3 = this._getBlackCode();\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += code3 = this._getWhiteCode();\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n\n        let gotEOL = false;\n\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  info(\"bad rtc code: \" + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if (code1 >> 1 === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[(this.codingPos = 0)];\n        } else {\n          this.outputBits = codingLine[(this.codingPos = 1)];\n        }\n        this.row++;\n      }\n\n      let c;\n      if (this.outputBits >= 8) {\n        c = this.codingPos & 1 ? 0 : 0xff;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits =\n            codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - bits);\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xff >> (8 - this.outputBits);\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits =\n                codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xff;\n      }\n      return c;\n    },\n\n    /**\n     * @private\n     */\n    _addPixels(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * @private\n     */\n    _addPixelsNeg(a1, blackPixels) {\n      const codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info(\"row is wrong length\");\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          info(\"invalid code\");\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * This function returns the code found from the table.\n     * The start and end parameters set the boundaries for searching the table.\n     * The limit parameter is optional. Function returns an array with three\n     * values. The first array element indicates whether a valid code is being\n     * returned. The second array element is the actual code. The third array\n     * element indicates whether EOF was reached.\n     * @private\n     */\n    _findTableCode(start, end, table, limit) {\n      const limitValue = limit || 0;\n      for (let i = start; i <= end; ++i) {\n        let code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          const p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n\n    /**\n     * @private\n     */\n    _getTwoDimCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        const result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      info(\"Bad two dim code\");\n      return ccittEOF;\n    },\n\n    /**\n     * @private\n     */\n    _getWhiteCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n\n        if (code >> 5 === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad white code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _getBlackCode() {\n      let code, p;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 7 === 0) {\n          p = blackTable1[code];\n        } else if (code >> 9 === 0 && code >> 7 !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info(\"bad black code\");\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _lookBits(n) {\n      let c;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n        }\n        this.inputBuf = (this.inputBuf << 8) | c;\n        this.inputBits += 8;\n      }\n      return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n    },\n\n    /**\n     * @private\n     */\n    _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    },\n  };\n\n  return CCITTFaxDecoder;\n})();\n\nexport { CCITTFaxDecoder };\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 { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst Jbig2Stream = (function Jbig2StreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(Jbig2Stream.prototype, \"bytes\", {\n    get() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  Jbig2Stream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  Jbig2Stream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (isDict(this.params)) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (isStream(globalsStream)) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n\n  return Jbig2Stream;\n})();\n\nexport { Jbig2Stream };\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 { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`);\n  }\n}\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n  // Utility data structures\n  function ContextCache() {}\n\n  ContextCache.prototype = {\n    getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return (this[id] = new Int8Array(1 << 16));\n    },\n  };\n\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n      return shadow(this, \"decoder\", decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return shadow(this, \"contextCache\", cache);\n    },\n  };\n\n  // Annex A. Arithmetic Integer Decoding Procedure\n  // A.2 Procedure for decoding values\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev =\n          prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n        v = (v << 1) | bit;\n      }\n      return v >>> 0;\n    }\n\n    var sign = readBits(1);\n    // prettier-ignore\n    /* eslint-disable no-nested-ternary */\n    var value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n    /* eslint-enable no-nested-ternary */\n    if (sign === 0) {\n      return value;\n    } else if (value > 0) {\n      return -value;\n    }\n    return null;\n  }\n\n  // A.3 The IAID decoding procedure\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts(\"IAID\");\n\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = (prev << 1) | bit;\n    }\n    if (codeLength < 31) {\n      return prev & ((1 << codeLength) - 1);\n    }\n    return prev & 0x7fffffff;\n  }\n\n  // 7.3 Segment types\n  var SegmentTypes = [\n    \"SymbolDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateTextRegion\",\n    null,\n    \"ImmediateTextRegion\",\n    \"ImmediateLosslessTextRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"PatternDictionary\",\n    null,\n    null,\n    null,\n    \"IntermediateHalftoneRegion\",\n    null,\n    \"ImmediateHalftoneRegion\",\n    \"ImmediateLosslessHalftoneRegion\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"IntermediateGenericRegion\",\n    null,\n    \"ImmediateGenericRegion\",\n    \"ImmediateLosslessGenericRegion\",\n    \"IntermediateGenericRefinementRegion\",\n    null,\n    \"ImmediateGenericRefinementRegion\",\n    \"ImmediateLosslessGenericRefinementRegion\",\n    null,\n    null,\n    null,\n    null,\n    \"PageInformation\",\n    \"EndOfPage\",\n    \"EndOfStripe\",\n    \"EndOfFile\",\n    \"Profiles\",\n    \"Tables\",\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    null,\n    \"Extension\",\n  ];\n\n  var CodingTemplates = [\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: 2, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: 2, y: -1 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -1, y: -2 },\n      { x: 0, y: -2 },\n      { x: 1, y: -2 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n    [\n      { x: -3, y: -1 },\n      { x: -2, y: -1 },\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -4, y: 0 },\n      { x: -3, y: 0 },\n      { x: -2, y: 0 },\n      { x: -1, y: 0 },\n    ],\n  ];\n\n  var RefinementTemplates = [\n    {\n      coding: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: -1, y: 1 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n    {\n      coding: [\n        { x: -1, y: -1 },\n        { x: 0, y: -1 },\n        { x: 1, y: -1 },\n        { x: -1, y: 0 },\n      ],\n      reference: [\n        { x: 0, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: 0 },\n        { x: 1, y: 0 },\n        { x: 0, y: 1 },\n        { x: 1, y: 1 },\n      ],\n    },\n  ];\n\n  // See 6.2.5.7 Decoding the bitmap.\n  var ReusedContexts = [\n    0x9b25, // 10011 0110010 0101\n    0x0795, // 0011 110010 101\n    0x00e5, // 001 11001 01\n    0x0195, // 011001 0101\n  ];\n\n  var RefinementReusedContexts = [\n    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n    0x0008, // '0000' + '001000'\n  ];\n\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n    var contextLabel,\n      i,\n      j,\n      pixel,\n      row,\n      row1,\n      row2,\n      bitmap = [];\n\n    // ...ooooo....\n    // ..ooooooo... Context template for current pixel (X)\n    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n    var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = i < 1 ? row : bitmap[i - 1];\n      row2 = i < 2 ? row : bitmap[i - 2];\n\n      // At the beginning of each row:\n      // Fill contextLabel with pixels that are above/right of (X)\n      contextLabel =\n        (row2[0] << 13) |\n        (row2[1] << 12) |\n        (row2[2] << 11) |\n        (row1[0] << 7) |\n        (row1[1] << 6) |\n        (row1[2] << 5) |\n        (row1[3] << 4);\n\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n        // At each pixel: Clear contextLabel pixels that are shifted\n        // out of the context, then add new ones.\n        contextLabel =\n          ((contextLabel & OLD_PIXEL_MASK) << 1) |\n          (j + 3 < width ? row2[j + 3] << 11 : 0) |\n          (j + 4 < width ? row1[j + 4] << 4 : 0) |\n          pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.2 Generic Region Decoding Procedure\n  function decodeBitmap(\n    mmr,\n    width,\n    height,\n    templateIndex,\n    prediction,\n    skip,\n    at,\n    decodingContext\n  ) {\n    if (mmr) {\n      const input = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n      return decodeMMRBitmap(input, width, height, false);\n    }\n\n    // Use optimized version for the most common case\n    if (\n      templateIndex === 0 &&\n      !skip &&\n      !prediction &&\n      at.length === 4 &&\n      at[0].x === 3 &&\n      at[0].y === -1 &&\n      at[1].x === -3 &&\n      at[1].y === -1 &&\n      at[2].x === 2 &&\n      at[2].y === -2 &&\n      at[3].x === -2 &&\n      at[3].y === -2\n    ) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n\n    // Sorting is non-standard, and it is not required. But sorting increases\n    // the number of template bits that can be reused from the previous\n    // contextLabel in the main loop.\n    template.sort(function (a, b) {\n      return a.y - b.y || a.x - b.x;\n    });\n\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0,\n      minX = 0,\n      maxX = 0,\n      minY = 0;\n    var c, k;\n\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      // Check if the template pixel appears in two consecutive context labels,\n      // so it can be reused. Otherwise, we add it to the list of changing\n      // template entries.\n      if (\n        k < templateLength - 1 &&\n        template[k].y === template[k + 1].y &&\n        template[k].x === template[k + 1].x - 1\n      ) {\n        reuseMask |= 1 << (templateLength - 1 - k);\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n    }\n\n    // Get the safe bounding box edges from the width, height, minX, maxX, minY\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n    var ltp = 0,\n      j,\n      i0,\n      j0,\n      contextLabel = 0,\n      bit,\n      shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row); // duplicate previous row\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        // Are we in the middle of a scanline, so we can reuse contextLabel\n        // bits?\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          // If yes, we can just shift the bits that are reusable and only\n          // fetch the remaining ones.\n          contextLabel = (contextLabel << 1) & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          // compute the contextLabel from scratch\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n\n  // 6.3.2 Generic Refinement Region Decoding Procedure\n  function decodeRefinement(\n    width,\n    height,\n    templateIndex,\n    referenceBitmap,\n    offsetX,\n    offsetY,\n    prediction,\n    at,\n    decodingContext\n  ) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error(\"prediction is not supported\");\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (\n            i0 < 0 ||\n            i0 >= referenceHeight ||\n            j0 < 0 ||\n            j0 >= referenceWidth\n          ) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.5.5 Decoding the symbol dictionary\n  function decodeSymbolDictionary(\n    huffman,\n    refinement,\n    symbols,\n    numberOfNewSymbols,\n    numberOfExportedSymbols,\n    huffmanTables,\n    templateIndex,\n    at,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n    }\n\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    let tableB1, symbolWidths;\n    if (huffman) {\n      tableB1 = getStandardTable(1); // standard table B.1\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n    }\n\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman\n        ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n      currentHeight += deltaHeight;\n      let currentWidth = 0,\n        totalWidth = 0;\n      const firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman\n          ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n        if (deltaWidth === null) {\n          break; // OOB\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n          var numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(\n              huffman,\n              refinement,\n              currentWidth,\n              currentHeight,\n              0,\n              numberOfInstances,\n              1, // strip size\n              symbols.concat(newSymbols),\n              symbolCodeLength,\n              0, // transposed\n              0, // ds offset\n              1, // top left 7.4.3.1.1\n              0, // OR operator\n              huffmanTables,\n              refinementTemplateIndex,\n              refinementAt,\n              decodingContext,\n              0,\n              huffmanInput\n            );\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n            var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n            var symbol =\n              symbolId < symbols.length\n                ? symbols[symbolId]\n                : newSymbols[symbolId - symbols.length];\n            bitmap = decodeRefinement(\n              currentWidth,\n              currentHeight,\n              refinementTemplateIndex,\n              symbol,\n              rdx,\n              rdy,\n              false,\n              refinementAt,\n              decodingContext\n            );\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          // Store only symbol width and decode a collective bitmap when the\n          // height class is done.\n          symbolWidths.push(currentWidth);\n        } else {\n          // 6.5.8.1 Direct-coded symbol bitmap\n          bitmap = decodeBitmap(\n            false,\n            currentWidth,\n            currentHeight,\n            templateIndex,\n            false,\n            null,\n            at,\n            decodingContext\n          );\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        // 6.5.9 Height class collective bitmap\n        const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        let collectiveBitmap;\n        if (bitmapSize === 0) {\n          // Uncompressed collective bitmap\n          collectiveBitmap = readUncompressedBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight\n          );\n        } else {\n          // MMR collective bitmap\n          const originalEnd = huffmanInput.end;\n          const bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(\n            huffmanInput,\n            totalWidth,\n            currentHeight,\n            false\n          );\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        const numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          // collectiveBitmap is a single symbol.\n          newSymbols.push(collectiveBitmap);\n        } else {\n          // Divide collectiveBitmap into symbols.\n          let i,\n            y,\n            xMin = 0,\n            xMax,\n            bitmapWidth,\n            symbolBitmap;\n          for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n            bitmapWidth = symbolWidths[i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n\n    // 6.5.10 Exported symbols\n    var exportedSymbols = [];\n    var flags = [],\n      currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman\n        ? tableB1.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAEX\", decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n\n  function decodeTextRegion(\n    huffman,\n    refinement,\n    width,\n    height,\n    defaultPixelValue,\n    numberOfSymbolInstances,\n    stripSize,\n    inputSymbols,\n    symbolCodeLength,\n    transposed,\n    dsOffset,\n    referenceCorner,\n    combinationOperator,\n    huffmanTables,\n    refinementTemplateIndex,\n    refinementAt,\n    decodingContext,\n    logStripSize,\n    huffmanInput\n  ) {\n    if (huffman && refinement) {\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    // Prepare bitmap\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n\n    var stripT = huffman\n      ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n      : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman\n        ? huffmanTables.tableDeltaT.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n      stripT += deltaT;\n\n      var deltaFirstS = huffman\n        ? huffmanTables.tableFirstS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        let currentT = 0; // 6.4.9\n        if (stripSize > 1) {\n          currentT = huffman\n            ? huffmanInput.readBits(logStripSize)\n            : decodeInteger(contextCache, \"IAIT\", decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman\n          ? huffmanTables.symbolIDTable.decode(huffmanInput)\n          : decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement =\n          refinement &&\n          (huffman\n            ? huffmanInput.readBit()\n            : decodeInteger(contextCache, \"IARI\", decoder));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n          var rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n          var rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          var rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(\n            symbolWidth,\n            symbolHeight,\n            refinementTemplateIndex,\n            symbolBitmap,\n            (rdw >> 1) + rdx,\n            (rdh >> 1) + rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          // Place Symbol Bitmap from T1,S1\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            // To ignore Parts of Symbol bitmap which goes\n            // outside bitmap region\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0: // OR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2: // XOR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0: // OR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2: // XOR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`\n                );\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman\n          ? huffmanTables.tableDeltaS.decode(huffmanInput)\n          : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n        if (deltaS === null) {\n          break; // OOB\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n\n  function decodePatternDictionary(\n    mmr,\n    patternWidth,\n    patternHeight,\n    maxPatternIndex,\n    template,\n    decodingContext\n  ) {\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    const collectiveBitmap = decodeBitmap(\n      mmr,\n      collectiveWidth,\n      patternHeight,\n      template,\n      false,\n      null,\n      at,\n      decodingContext\n    );\n    // Divide collective bitmap into patterns.\n    const patterns = [];\n    for (let i = 0; i <= maxPatternIndex; i++) {\n      const patternBitmap = [];\n      const xMin = patternWidth * i;\n      const xMax = xMin + patternWidth;\n      for (let y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n    }\n    return patterns;\n  }\n\n  function decodeHalftoneRegion(\n    mmr,\n    patterns,\n    template,\n    regionWidth,\n    regionHeight,\n    defaultPixelValue,\n    enableSkip,\n    combinationOperator,\n    gridWidth,\n    gridHeight,\n    gridOffsetX,\n    gridOffsetY,\n    gridVectorX,\n    gridVectorY,\n    decodingContext\n  ) {\n    const skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error(\"skip is not supported\");\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error(\n        \"operator \" +\n          combinationOperator +\n          \" is not supported in halftone region\"\n      );\n    }\n\n    // Prepare bitmap.\n    const regionBitmap = [];\n    let i, j, row;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n\n    const numberOfPatterns = patterns.length;\n    const pattern0 = patterns[0];\n    const patternWidth = pattern0[0].length,\n      patternHeight = pattern0.length;\n    const bitsPerValue = log2(numberOfPatterns);\n    const at = [];\n    if (!mmr) {\n      at.push({\n        x: template <= 1 ? 3 : 2,\n        y: -1,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    // Annex C. Gray-scale Image Decoding Procedure.\n    const grayScaleBitPlanes = [];\n    let mmrInput, bitmap;\n    if (mmr) {\n      // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n      // the end of each bitmap, so EOFBs must be decoded.\n      mmrInput = new Reader(\n        decodingContext.data,\n        decodingContext.start,\n        decodingContext.end\n      );\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(\n          false,\n          gridWidth,\n          gridHeight,\n          template,\n          false,\n          skip,\n          at,\n          decodingContext\n        );\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    // 6.6.5.2 Rendering the patterns.\n    let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit; // Gray decoding\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n        y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n        // Draw patternBitmap at (x, y).\n        if (\n          x >= 0 &&\n          x + patternWidth <= regionWidth &&\n          y >= 0 &&\n          y + patternHeight <= regionHeight\n        ) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          let regionX, regionY;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = readUint32(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3f;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = (referredFlags >> 5) & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n      position += 3;\n      var bytes = (referredToCount + 7) >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error(\"invalid referred-to flags\");\n    }\n\n    segmentHeader.retainBits = retainBits;\n\n    let referredToSegmentNumberSize = 4;\n    if (segmentHeader.number <= 256) {\n      referredToSegmentNumberSize = 1;\n    } else if (segmentHeader.number <= 65536) {\n      referredToSegmentNumberSize = 2;\n    }\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      let number;\n      if (referredToSegmentNumberSize === 1) {\n        number = data[position];\n      } else if (referredToSegmentNumberSize === 2) {\n        number = readUint16(data, position);\n      } else {\n        number = readUint32(data, position);\n      }\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = readUint32(data, position);\n      position += 4;\n    }\n    segmentHeader.length = readUint32(data, position);\n    position += 4;\n\n    if (segmentHeader.length === 0xffffffff) {\n      // 7.2.7 Segment data length, unknown segment length\n      if (segmentType === 38) {\n        // ImmediateGenericRegion\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags =\n          data[position + RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        // searching for the segment end\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xff;\n          searchPattern[1] = 0xac;\n        }\n        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n        searchPattern[5] = genericRegionInfo.height & 0xff;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xffffffff) {\n          throw new Jbig2Error(\"segment end was not found\");\n        }\n      } else {\n        throw new Jbig2Error(\"invalid unknown segment length\");\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data,\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break; // end of file is found\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n\n  // 7.4.1 Region segment information field\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: readUint32(data, start),\n      height: readUint32(data, start + 4),\n      x: readUint32(data, start + 8),\n      y: readUint32(data, start + 12),\n      combinationOperator: data[start + 16] & 7,\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n\n    var data = segment.data,\n      position = segment.start,\n      end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0: // SymbolDictionary\n        // 7.4.2 Symbol dictionary segment syntax\n        var dictionary = {};\n        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = (dictionaryFlags >> 10) & 3;\n        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = readUint32(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = readUint32(data, position);\n        position += 4;\n        args = [\n          dictionary,\n          header.number,\n          header.referredTo,\n          data,\n          position,\n          end,\n        ];\n        break;\n      case 6: // ImmediateTextRegion\n      case 7: // ImmediateLosslessTextRegion\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = readUint16(data, position);\n          position += 2;\n          textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n          textRegion.huffmanRefinementSizeSelector = !!(\n            textRegionHuffmanFlags & 0x4000\n          );\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = readUint32(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16: // PatternDictionary\n        // 7.4.4. Pattern dictionary segment syntax\n        const patternDictionary = {};\n        const patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = readUint32(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22: // ImmediateHalftoneRegion\n      case 23: // ImmediateLosslessHalftoneRegion\n        // 7.4.5 Halftone region segment syntax\n        const halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        const halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n        halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n        halftoneRegion.gridWidth = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n        position += 4;\n        halftoneRegion.gridVectorX = readUint16(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = readUint16(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38: // ImmediateGenericRegion\n      case 39: // ImmediateLosslessGenericRegion\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48: // PageInformation\n        var pageInfo = {\n          width: readUint32(data, position),\n          height: readUint32(data, position + 4),\n          resolutionX: readUint32(data, position + 8),\n          resolutionY: readUint32(data, position + 12),\n        };\n        if (pageInfo.height === 0xffffffff) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        readUint16(data, position + 17); // pageStripingInformation\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49: // EndOfPage\n        break;\n      case 50: // EndOfStripe\n        break;\n      case 51: // EndOfFile\n        break;\n      case 53: // Tables\n        args = [header.number, data, position, end];\n        break;\n      case 62: // 7.4.15 defines 2 extension types which\n        // are comments and can be ignored.\n        break;\n      default:\n        throw new Jbig2Error(\n          `segment type ${header.typeName}(${header.type})` +\n            \" is not implemented\"\n        );\n    }\n    var callbackName = \"on\" + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n\n  function parseJbig2(data) {\n    const end = data.length;\n    let position = 0;\n\n    if (\n      data[position] !== 0x97 ||\n      data[position + 1] !== 0x4a ||\n      data[position + 2] !== 0x42 ||\n      data[position + 3] !== 0x32 ||\n      data[position + 4] !== 0x0d ||\n      data[position + 5] !== 0x0a ||\n      data[position + 6] !== 0x1a ||\n      data[position + 7] !== 0x0a\n    ) {\n      throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n    }\n\n    const header = Object.create(null);\n    position += 8;\n    const flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = readUint32(data, position);\n      position += 4;\n    }\n\n    const segments = readSegments(header, data, position, end);\n    const visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n\n    const { width, height } = visitor.currentPageInfo;\n    const bitPacked = visitor.buffer;\n    const imgData = new Uint8ClampedArray(width * height);\n    let q = 0,\n      k = 0;\n    for (let i = 0; i < height; i++) {\n      let mask = 0,\n        buffer;\n      for (let j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128;\n          buffer = bitPacked[k++];\n        }\n        imgData[q++] = buffer & mask ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n\n    return { imgData, width, height };\n  }\n\n  function SimpleSegmentVisitor() {}\n\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = (info.width + 7) >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      // The contents of ArrayBuffers are initialized to 0.\n      // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xff;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width,\n        height = regionInfo.height;\n      var rowSize = (pageInfo.width + 7) >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride\n        ? regionInfo.combinationOperator\n        : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0: // OR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        case 2: // XOR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error(\n            `operator ${combinationOperator} is not supported`\n          );\n      }\n    },\n    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(\n      region,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(\n        region.mmr,\n        regionInfo.width,\n        regionInfo.height,\n        region.template,\n        region.prediction,\n        null,\n        region.at,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(\n      dictionary,\n      currentSegment,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      let huffmanTables, huffmanInput;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(\n          dictionary,\n          referredSegments,\n          this.customTables\n        );\n        huffmanInput = new Reader(data, start, end);\n      }\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(\n        dictionary.huffman,\n        dictionary.refinement,\n        inputSymbols,\n        dictionary.numberOfNewSymbols,\n        dictionary.numberOfExportedSymbols,\n        huffmanTables,\n        dictionary.template,\n        dictionary.at,\n        dictionary.refinementTemplate,\n        dictionary.refinementAt,\n        decodingContext,\n        huffmanInput\n      );\n    },\n    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(\n      region,\n      referredSegments,\n      data,\n      start,\n      end\n    ) {\n      var regionInfo = region.info;\n      let huffmanTables, huffmanInput;\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        const referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = log2(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(\n          region,\n          referredSegments,\n          this.customTables,\n          inputSymbols.length,\n          huffmanInput\n        );\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(\n        region.huffman,\n        region.refinement,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.numberOfSymbolInstances,\n        region.stripSize,\n        inputSymbols,\n        symbolCodeLength,\n        region.transposed,\n        region.dsOffset,\n        region.referenceCorner,\n        region.combinationOperator,\n        huffmanTables,\n        region.refinementTemplate,\n        region.refinementAt,\n        decodingContext,\n        region.logStripSize,\n        huffmanInput\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      let patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      const decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(\n        dictionary.mmr,\n        dictionary.patternWidth,\n        dictionary.patternHeight,\n        dictionary.maxPatternIndex,\n        dictionary.template,\n        decodingContext\n      );\n    },\n    onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      // HalftoneRegion refers to exactly one PatternDictionary.\n      const patterns = this.patterns[referredSegments[0]];\n      const regionInfo = region.info;\n      const decodingContext = new DecodingContext(data, start, end);\n      const bitmap = decodeHalftoneRegion(\n        region.mmr,\n        patterns,\n        region.template,\n        regionInfo.width,\n        regionInfo.height,\n        region.defaultPixelValue,\n        region.enableSkip,\n        region.combinationOperator,\n        region.gridWidth,\n        region.gridHeight,\n        region.gridOffsetX,\n        region.gridOffsetY,\n        region.gridVectorX,\n        region.gridVectorY,\n        decodingContext\n      );\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables(currentSegment, data, start, end) {\n      let customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    },\n  };\n\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  HuffmanTreeNode.prototype = {\n    buildTree(line, shift) {\n      const bit = (line.prefixCode >> shift) & 1;\n      if (shift <= 0) {\n        // Create a leaf node.\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        // Create an intermediate node and continue recursively.\n        let node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        const htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      const node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error(\"invalid Huffman data\");\n      }\n      return node.decodeNode(reader);\n    },\n  };\n\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  HuffmanTable.prototype = {\n    decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes(lines) {\n      // Annex B.3 Assigning the prefix codes.\n      const linesLength = lines.length;\n      let prefixLengthMax = 0;\n      for (let i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n\n      const histogram = new Uint32Array(prefixLengthMax + 1);\n      for (let i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      let currentLength = 1,\n        firstCode = 0,\n        currentCode,\n        currentTemp,\n        line;\n      histogram[0] = 0;\n\n      while (currentLength <= prefixLengthMax) {\n        firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    },\n  };\n\n  function decodeTablesSegment(data, start, end) {\n    // Decodes a Tables segment, i.e., a custom Huffman table.\n    // Annex B.2 Code table structure.\n    const flags = data[start];\n    const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n    const highestValue = readUint32(data, start + 5) & 0xffffffff;\n    const reader = new Reader(data, start + 9, end);\n\n    const prefixSizeBits = ((flags >> 1) & 7) + 1;\n    const rangeSizeBits = ((flags >> 4) & 7) + 1;\n    const lines = [];\n    let prefixLength,\n      rangeLength,\n      currentRangeLow = lowestValue;\n\n    // Normal table lines\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(\n        new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n      );\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n\n    // Lower range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(\n      new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"])\n    );\n\n    // Upper range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n    if (flags & 1) {\n      // Out-of-band table line\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n\n    return new HuffmanTable(lines, false);\n  }\n\n  const standardTablesCache = {};\n\n  function getStandardTable(number) {\n    // Annex B.5 Standard Huffman tables.\n    let table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    let lines;\n    switch (number) {\n      case 1:\n        lines = [\n          [0, 1, 4, 0x0],\n          [16, 2, 8, 0x2],\n          [272, 3, 16, 0x6],\n          [65808, 3, 32, 0x7], // upper\n        ];\n        break;\n      case 2:\n        lines = [\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [75, 6, 32, 0x3e], // upper\n          [6, 0x3f], // OOB\n        ];\n        break;\n      case 3:\n        lines = [\n          [-256, 8, 8, 0xfe],\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xe],\n          [11, 5, 6, 0x1e],\n          [-257, 8, 32, 0xff, \"lower\"],\n          [75, 7, 32, 0x7e], // upper\n          [6, 0x3e], // OOB\n        ];\n        break;\n      case 4:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [76, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 5:\n        lines = [\n          [-255, 7, 8, 0x7e],\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xe],\n          [12, 5, 6, 0x1e],\n          [-256, 7, 32, 0x7f, \"lower\"],\n          [76, 6, 32, 0x3e], // upper\n        ];\n        break;\n      case 6:\n        lines = [\n          [-2048, 5, 10, 0x1c],\n          [-1024, 4, 9, 0x8],\n          [-512, 4, 8, 0x9],\n          [-256, 4, 7, 0xa],\n          [-128, 5, 6, 0x1d],\n          [-64, 5, 5, 0x1e],\n          [-32, 4, 5, 0xb],\n          [0, 2, 7, 0x0],\n          [128, 3, 7, 0x2],\n          [256, 3, 8, 0x3],\n          [512, 4, 9, 0xc],\n          [1024, 4, 10, 0xd],\n          [-2049, 6, 32, 0x3e, \"lower\"],\n          [2048, 6, 32, 0x3f], // upper\n        ];\n        break;\n      case 7:\n        lines = [\n          [-1024, 4, 9, 0x8],\n          [-512, 3, 8, 0x0],\n          [-256, 4, 7, 0x9],\n          [-128, 5, 6, 0x1a],\n          [-64, 5, 5, 0x1b],\n          [-32, 4, 5, 0xa],\n          [0, 4, 5, 0xb],\n          [32, 5, 5, 0x1c],\n          [64, 5, 6, 0x1d],\n          [128, 4, 7, 0xc],\n          [256, 3, 8, 0x1],\n          [512, 3, 9, 0x2],\n          [1024, 3, 10, 0x3],\n          [-1025, 5, 32, 0x1e, \"lower\"],\n          [2048, 5, 32, 0x1f], // upper\n        ];\n        break;\n      case 8:\n        lines = [\n          [-15, 8, 3, 0xfc],\n          [-7, 9, 1, 0x1fc],\n          [-5, 8, 1, 0xfd],\n          [-3, 9, 0, 0x1fd],\n          [-2, 7, 0, 0x7c],\n          [-1, 4, 0, 0xa],\n          [0, 2, 1, 0x0],\n          [2, 5, 0, 0x1a],\n          [3, 6, 0, 0x3a],\n          [4, 3, 4, 0x4],\n          [20, 6, 1, 0x3b],\n          [22, 4, 4, 0xb],\n          [38, 4, 5, 0xc],\n          [70, 5, 6, 0x1b],\n          [134, 5, 7, 0x1c],\n          [262, 6, 7, 0x3c],\n          [390, 7, 8, 0x7d],\n          [646, 6, 10, 0x3d],\n          [-16, 9, 32, 0x1fe, \"lower\"],\n          [1670, 9, 32, 0x1ff], // upper\n          [2, 0x1], // OOB\n        ];\n        break;\n      case 9:\n        lines = [\n          [-31, 8, 4, 0xfc],\n          [-15, 9, 2, 0x1fc],\n          [-11, 8, 2, 0xfd],\n          [-7, 9, 1, 0x1fd],\n          [-5, 7, 1, 0x7c],\n          [-3, 4, 1, 0xa],\n          [-1, 3, 1, 0x2],\n          [1, 3, 1, 0x3],\n          [3, 5, 1, 0x1a],\n          [5, 6, 1, 0x3a],\n          [7, 3, 5, 0x4],\n          [39, 6, 2, 0x3b],\n          [43, 4, 5, 0xb],\n          [75, 4, 6, 0xc],\n          [139, 5, 7, 0x1b],\n          [267, 5, 8, 0x1c],\n          [523, 6, 8, 0x3c],\n          [779, 7, 9, 0x7d],\n          [1291, 6, 11, 0x3d],\n          [-32, 9, 32, 0x1fe, \"lower\"],\n          [3339, 9, 32, 0x1ff], // upper\n          [2, 0x0], // OOB\n        ];\n        break;\n      case 10:\n        lines = [\n          [-21, 7, 4, 0x7a],\n          [-5, 8, 0, 0xfc],\n          [-4, 7, 0, 0x7b],\n          [-3, 5, 0, 0x18],\n          [-2, 2, 2, 0x0],\n          [2, 5, 0, 0x19],\n          [3, 6, 0, 0x36],\n          [4, 7, 0, 0x7c],\n          [5, 8, 0, 0xfd],\n          [6, 2, 6, 0x1],\n          [70, 5, 5, 0x1a],\n          [102, 6, 5, 0x37],\n          [134, 6, 6, 0x38],\n          [198, 6, 7, 0x39],\n          [326, 6, 8, 0x3a],\n          [582, 6, 9, 0x3b],\n          [1094, 6, 10, 0x3c],\n          [2118, 7, 11, 0x7d],\n          [-22, 8, 32, 0xfe, \"lower\"],\n          [4166, 8, 32, 0xff], // upper\n          [2, 0x2], // OOB\n        ];\n        break;\n      case 11:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 1, 0x2],\n          [4, 4, 0, 0xc],\n          [5, 4, 1, 0xd],\n          [7, 5, 1, 0x1c],\n          [9, 5, 2, 0x1d],\n          [13, 6, 2, 0x3c],\n          [17, 7, 2, 0x7a],\n          [21, 7, 3, 0x7b],\n          [29, 7, 4, 0x7c],\n          [45, 7, 5, 0x7d],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 12:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 1, 0x6],\n          [5, 5, 0, 0x1c],\n          [6, 5, 1, 0x1d],\n          [8, 6, 1, 0x3c],\n          [10, 7, 0, 0x7a],\n          [11, 7, 1, 0x7b],\n          [13, 7, 2, 0x7c],\n          [17, 7, 3, 0x7d],\n          [25, 7, 4, 0x7e],\n          [41, 8, 5, 0xfe],\n          [73, 8, 32, 0xff], // upper\n        ];\n        break;\n      case 13:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 3, 0, 0x4],\n          [3, 4, 0, 0xc],\n          [4, 5, 0, 0x1c],\n          [5, 4, 1, 0xd],\n          [7, 3, 3, 0x5],\n          [15, 6, 1, 0x3a],\n          [17, 6, 2, 0x3b],\n          [21, 6, 3, 0x3c],\n          [29, 6, 4, 0x3d],\n          [45, 6, 5, 0x3e],\n          [77, 7, 6, 0x7e],\n          [141, 7, 32, 0x7f], // upper\n        ];\n        break;\n      case 14:\n        lines = [\n          [-2, 3, 0, 0x4],\n          [-1, 3, 0, 0x5],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x6],\n          [2, 3, 0, 0x7],\n        ];\n        break;\n      case 15:\n        lines = [\n          [-24, 7, 4, 0x7c],\n          [-8, 6, 2, 0x3c],\n          [-4, 5, 1, 0x1c],\n          [-2, 4, 0, 0xc],\n          [-1, 3, 0, 0x4],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x5],\n          [2, 4, 0, 0xd],\n          [3, 5, 1, 0x1d],\n          [5, 6, 2, 0x3d],\n          [9, 7, 4, 0x7d],\n          [-25, 7, 32, 0x7e, \"lower\"],\n          [25, 7, 32, 0x7f], // upper\n        ];\n        break;\n      default:\n        throw new Jbig2Error(`standard table B.${number} does not exist`);\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  Reader.prototype = {\n    readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error(\"end of data while reading bit\");\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      const bit = (this.currentByte >> this.shift) & 1;\n      this.shift--;\n      return bit;\n    },\n\n    readBits(numBits) {\n      let result = 0,\n        i;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n\n    byteAlign() {\n      this.shift = -1;\n    },\n\n    next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    },\n  };\n\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    // Returns a Tables segment that has been earlier decoded.\n    // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n    let currentIndex = 0;\n    for (let i = 0, ii = referredTo.length; i < ii; i++) {\n      const table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error(\"can't find custom Huffman table\");\n  }\n\n  function getTextRegionHuffmanTables(\n    textRegion,\n    referredTo,\n    customTables,\n    numberOfSymbols,\n    reader\n  ) {\n    // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n    // Read code lengths for RUNCODEs 0...34.\n    const codes = [];\n    for (let i = 0; i <= 34; i++) {\n      const codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    // Assign Huffman codes for RUNCODEs.\n    const runCodesTable = new HuffmanTable(codes, false);\n\n    // Read a Huffman code using the assignment above.\n    // Interpret the RUNCODE codes and the additional bits (if any).\n    codes.length = 0;\n    for (let i = 0; i < numberOfSymbols; ) {\n      const codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        let repeatedLength, numberOfRepeats, j;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error(\"no previous value in symbol ID table\");\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error(\"invalid code length in symbol ID table\");\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    const symbolIDTable = new HuffmanTable(codes, false);\n\n    // 7.4.3.1.6 Text region segment Huffman table selection\n\n    let customIndex = 0,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT;\n\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman FS selector\");\n    }\n\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DS selector\");\n    }\n\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DT selector\");\n    }\n\n    if (textRegion.refinement) {\n      // Load tables RDW, RDH, RDX and RDY.\n      throw new Jbig2Error(\"refinement with Huffman is not supported\");\n    }\n\n    return {\n      symbolIDTable,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT,\n    };\n  }\n\n  function getSymbolDictionaryHuffmanTables(\n    dictionary,\n    referredTo,\n    customTables\n  ) {\n    // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n    let customIndex = 0,\n      tableDeltaHeight,\n      tableDeltaWidth;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DH selector\");\n    }\n\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(\n          customIndex,\n          referredTo,\n          customTables\n        );\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error(\"invalid Huffman DW selector\");\n    }\n\n    let tableBitmapSize, tableAggregateInstances;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n\n    return {\n      tableDeltaHeight,\n      tableDeltaWidth,\n      tableBitmapSize,\n      tableAggregateInstances,\n    };\n  }\n\n  function readUncompressedBitmap(reader, width, height) {\n    const bitmap = [];\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      for (let x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    // MMR is the same compression algorithm as the PDF filter\n    // CCITTFaxDecode with /K -1.\n    const params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock,\n    };\n    const decoder = new CCITTFaxDecoder(input, params);\n    const bitmap = [];\n    let currentByte,\n      eof = false;\n\n    for (let y = 0; y < height; y++) {\n      const row = new Uint8Array(width);\n      bitmap.push(row);\n      let shift = -1;\n      for (let x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            // Set the rest of the bits to zero.\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = (currentByte >> shift) & 1;\n        shift--;\n      }\n    }\n\n    if (endOfBlock && !eof) {\n      // Read until EOFB has been consumed.\n      const lookForEOFLimit = 5;\n      for (let i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n\n    return bitmap;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Jbig2Image() {}\n\n  Jbig2Image.prototype = {\n    parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n\n    parse(data) {\n      const { imgData, width, height } = parseJbig2(data);\n      this.width = width;\n      this.height = height;\n      return imgData;\n    },\n  };\n\n  return Jbig2Image;\n})();\n\nexport { Jbig2Image };\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/* eslint no-var: error */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\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 { DecodeStream } from \"./stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nconst JpegStream = (function JpegStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpegStream(stream, maybeLength, dict, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpegStream.prototype, \"bytes\", {\n    get: function JpegStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpegStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"Decode\", \"D\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n\n  return JpegStream;\n})();\n\nexport { JpegStream };\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 { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`);\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message);\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n  // prettier-ignore\n  var dctZigZag = new Uint8Array([\n     0,\n     1,  8,\n    16,  9,  2,\n     3, 10, 17, 24,\n    32, 25, 18, 11, 4,\n     5, 12, 19, 26, 33, 40,\n    48, 41, 34, 27, 20, 13,  6,\n     7, 14, 21, 28, 35, 42, 49, 56,\n    57, 50, 43, 36, 29, 22, 15,\n    23, 30, 37, 44, 51, 58,\n    59, 52, 45, 38, 31,\n    39, 46, 53, 60,\n    61, 54, 47,\n    55, 62,\n    63\n  ]);\n\n  var dctCos1 = 4017; // cos(pi/16)\n  var dctSin1 = 799; // sin(pi/16)\n  var dctCos3 = 3406; // cos(3*pi/16)\n  var dctSin3 = 2276; // sin(3*pi/16)\n  var dctCos6 = 1567; // cos(6*pi/16)\n  var dctSin6 = 3784; // sin(6*pi/16)\n  var dctSqrt2 = 5793; // sqrt(2)\n  var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n  // eslint-disable-next-line no-shadow\n  function JpegImage({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0,\n      code = [],\n      i,\n      j,\n      length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({ children: [], index: 0 });\n    var p = code[0],\n      q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push((q = { children: [], index: 0 }));\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        // p here points to last code\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n\n  function decodeScan(\n    data,\n    offset,\n    frame,\n    components,\n    resetInterval,\n    spectralStart,\n    spectralEnd,\n    successivePrev,\n    successive,\n    parseDNLMarker = false\n  ) {\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n\n    const startOffset = offset;\n    let bitsData = 0,\n      bitsCount = 0;\n\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return (bitsData >> bitsCount) & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xff) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n            offset += 2; // Skip marker length.\n\n            const scanLines = readUint16(data, offset);\n            offset += 2;\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError(\n                \"Found DNL marker (0xFFDC) while parsing scan data\",\n                scanLines\n              );\n            }\n          } else if (nextByte === /* EOI = */ 0xd9) {\n            if (parseDNLMarker) {\n              // NOTE: only 8-bit JPEG images are supported in this decoder.\n              const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n              // Heuristic to attempt to handle corrupt JPEG images with too\n              // large `scanLines` parameter, by falling back to the currently\n              // parsed number of scanLines when it's at least (approximately)\n              // one order of magnitude smaller than expected (fixes\n              // issue10880.pdf and issue10989.pdf).\n              if (\n                maybeScanLines > 0 &&\n                Math.round(frame.scanLines / maybeScanLines) >= 10\n              ) {\n                throw new DNLMarkerError(\n                  \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                    \"possibly caused by incorrect `scanLines` parameter\",\n                  maybeScanLines\n                );\n              }\n            }\n            throw new EOIMarkerError(\n              \"Found EOI marker (0xFFD9) while parsing scan data\"\n            );\n          }\n          throw new JpegError(\n            `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n          );\n        }\n        // unstuff 0\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        switch (typeof node) {\n          case \"number\":\n            return node;\n          case \"object\":\n            continue;\n        }\n        throw new JpegError(\"invalid huffman sequence\");\n      }\n    }\n\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = (n << 1) | readBit();\n        length--;\n      }\n      return n;\n    }\n\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << (length - 1)) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n\n    function decodeBaseline(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[blockOffset] = component.pred += diff;\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n\n    function decodeDCFirst(component, blockOffset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n      component.blockData[blockOffset] = component.pred += diff;\n    }\n\n    function decodeDCSuccessive(component, blockOffset) {\n      component.blockData[blockOffset] |= readBit() << successive;\n    }\n\n    var eobrun = 0;\n    function decodeACFirst(component, blockOffset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart,\n        e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n          r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[blockOffset + z] =\n          receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n\n    var successiveACState = 0,\n      successiveACNextValue;\n    function decodeACSuccessive(component, blockOffset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        const offsetZ = blockOffset + dctZigZag[k];\n        const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0: // initial state\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError(\"invalid ACn encoding\");\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1: // skipping r zero items\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3: // set value for a zero item\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] =\n                successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4: // eob\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n\n    let blockRow = 0;\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = (mcu / mcusPerLine) | 0;\n      var mcuCol = mcu % mcusPerLine;\n      blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    function decodeBlock(component, decode, mcu) {\n      blockRow = (mcu / component.blocksPerLine) | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, blockOffset);\n    }\n\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n\n    var mcu = 0,\n      fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n\n    var h, v;\n    while (mcu <= mcuExpected) {\n      // reset interval stuff\n      var mcuToRead = resetInterval\n        ? Math.min(mcuExpected - mcu, resetInterval)\n        : mcuExpected;\n\n      // The `mcuToRead === 0` case should only occur when all of the expected\n      // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n      // some corrupt JPEG images contain more data than intended and we thus\n      // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n      if (mcuToRead > 0) {\n        for (i = 0; i < componentsLength; i++) {\n          components[i].pred = 0;\n        }\n        eobrun = 0;\n\n        if (componentsLength === 1) {\n          component = components[0];\n          for (n = 0; n < mcuToRead; n++) {\n            decodeBlock(component, decodeFn, mcu);\n            mcu++;\n          }\n        } else {\n          for (n = 0; n < mcuToRead; n++) {\n            for (i = 0; i < componentsLength; i++) {\n              component = components[i];\n              h = component.h;\n              v = component.v;\n              for (j = 0; j < v; j++) {\n                for (k = 0; k < h; k++) {\n                  decodeMcu(component, decodeFn, mcu, j, k);\n                }\n              }\n            }\n            mcu++;\n          }\n        }\n      }\n\n      // find marker\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      if (!fileMarker) {\n        break; // Reached the end of the image data without finding any marker.\n      }\n      if (fileMarker.invalid) {\n        // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n        // past those to attempt to find a valid marker (fixes issue4090.pdf).\n        const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n        warn(\n          `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n        );\n        offset = fileMarker.offset;\n      }\n      if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n        // RSTx\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n\n    return offset - startOffset;\n  }\n\n  // A port of poppler's IDCT method which in turn is taken from:\n  //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n  //   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n  //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n  //   988-991.\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable,\n      blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n\n    if (!qt) {\n      throw new JpegError(\"missing required Quantization Table.\");\n    }\n\n    // inverse DCT on rows\n    for (var row = 0; row < 64; row += 8) {\n      // gather block data\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n\n      // dequant p0\n      p0 *= qt[row];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 512) >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      // dequant p1 ... p7\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 128) >> 8;\n      v1 = (dctSqrt2 * p4 + 128) >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n\n      // stage 3\n      v0 = (v0 + v1 + 1) >> 1;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n\n    // inverse DCT on columns\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col + 8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 8192) >> 14;\n        // Convert to 8-bit.\n        if (t < -2040) {\n          t = 0;\n        } else if (t >= 2024) {\n          t = 255;\n        } else {\n          t = (t + 2056) >> 4;\n        }\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col + 8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 2048) >> 12;\n      v1 = (dctSqrt2 * p4 + 2048) >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n      v5 = p3;\n      v6 = p5;\n\n      // stage 3\n      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n      // converting to UInt8 range later.\n      v0 = ((v0 + v1 + 1) >> 1) + 4112;\n      v1 = v0 - v1;\n      t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n\n      // Convert to 8-bit integers.\n      if (p0 < 16) {\n        p0 = 0;\n      } else if (p0 >= 4080) {\n        p0 = 255;\n      } else {\n        p0 >>= 4;\n      }\n      if (p1 < 16) {\n        p1 = 0;\n      } else if (p1 >= 4080) {\n        p1 = 255;\n      } else {\n        p1 >>= 4;\n      }\n      if (p2 < 16) {\n        p2 = 0;\n      } else if (p2 >= 4080) {\n        p2 = 255;\n      } else {\n        p2 >>= 4;\n      }\n      if (p3 < 16) {\n        p3 = 0;\n      } else if (p3 >= 4080) {\n        p3 = 255;\n      } else {\n        p3 >>= 4;\n      }\n      if (p4 < 16) {\n        p4 = 0;\n      } else if (p4 >= 4080) {\n        p4 = 255;\n      } else {\n        p4 >>= 4;\n      }\n      if (p5 < 16) {\n        p5 = 0;\n      } else if (p5 >= 4080) {\n        p5 = 255;\n      } else {\n        p5 >>= 4;\n      }\n      if (p6 < 16) {\n        p6 = 0;\n      } else if (p6 >= 4080) {\n        p6 = 255;\n      } else {\n        p6 >>= 4;\n      }\n      if (p7 < 16) {\n        p7 = 0;\n      } else if (p7 >= 4080) {\n        p7 = 255;\n      } else {\n        p7 >>= 4;\n      }\n\n      // store block data\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col + 8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n\n  function findNextFileMarker(data, currentPos, startPos = currentPos) {\n    const maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n\n    if (currentPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    var currentMarker = readUint16(data, currentPos);\n    if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos,\n      };\n    }\n    var newMarker = readUint16(data, newPos);\n    while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n      if (++newPos >= maxPos) {\n        return null; // Don't attempt to read non-existent data and just return.\n      }\n      newMarker = readUint16(data, newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos,\n    };\n  }\n\n  JpegImage.prototype = {\n    parse(data, { dnlScanLines = null } = {}) {\n      function readDataBlock() {\n        const length = readUint16(data, offset);\n        offset += 2;\n        let endOffset = offset + length - 2;\n\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          warn(\n            \"readDataBlock - incorrect length, current marker is: \" +\n              fileMarker.invalid\n          );\n          endOffset = fileMarker.offset;\n        }\n\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(\n            (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n          );\n          var blocksPerColumn = Math.ceil(\n            (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n          );\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n          var blocksBufferSize =\n            64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      let numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [],\n        huffmanTablesDC = [];\n\n      let fileMarker = readUint16(data, offset);\n      offset += 2;\n      if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n        throw new JpegError(\"SOI not found\");\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n\n      markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xffe0: // APP0 (Application Specific)\n          case 0xffe1: // APP1\n          case 0xffe2: // APP2\n          case 0xffe3: // APP3\n          case 0xffe4: // APP4\n          case 0xffe5: // APP5\n          case 0xffe6: // APP6\n          case 0xffe7: // APP7\n          case 0xffe8: // APP8\n          case 0xffe9: // APP9\n          case 0xffea: // APP10\n          case 0xffeb: // APP11\n          case 0xffec: // APP12\n          case 0xffed: // APP13\n          case 0xffee: // APP14\n          case 0xffef: // APP15\n          case 0xfffe: // COM (Comment)\n            var appData = readDataBlock();\n\n            if (fileMarker === 0xffe0) {\n              // 'JFIF\\x00'\n              if (\n                appData[0] === 0x4a &&\n                appData[1] === 0x46 &&\n                appData[2] === 0x49 &&\n                appData[3] === 0x46 &&\n                appData[4] === 0\n              ) {\n                jfif = {\n                  version: { major: appData[5], minor: appData[6] },\n                  densityUnits: appData[7],\n                  xDensity: (appData[8] << 8) | appData[9],\n                  yDensity: (appData[10] << 8) | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(\n                    14,\n                    14 + 3 * appData[12] * appData[13]\n                  ),\n                };\n              }\n            }\n            // TODO APP1 - Exif\n            if (fileMarker === 0xffee) {\n              // 'Adobe'\n              if (\n                appData[0] === 0x41 &&\n                appData[1] === 0x64 &&\n                appData[2] === 0x6f &&\n                appData[3] === 0x62 &&\n                appData[4] === 0x65\n              ) {\n                adobe = {\n                  version: (appData[5] << 8) | appData[6],\n                  flags0: (appData[7] << 8) | appData[8],\n                  flags1: (appData[9] << 8) | appData[10],\n                  transformCode: appData[11],\n                };\n              }\n            }\n            break;\n\n          case 0xffdb: // DQT (Define Quantization Tables)\n            const quantizationTablesLength = readUint16(data, offset);\n            offset += 2;\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if (quantizationTableSpec >> 4 === 0) {\n                // 8 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if (quantizationTableSpec >> 4 === 1) {\n                // 16 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16(data, offset);\n                  offset += 2;\n                }\n              } else {\n                throw new JpegError(\"DQT - invalid table spec\");\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n\n          case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n          case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n          case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n            if (frame) {\n              throw new JpegError(\"Only single frame JPEGs supported\");\n            }\n            offset += 2; // Skip marker length.\n\n            frame = {};\n            frame.extended = fileMarker === 0xffc1;\n            frame.progressive = fileMarker === 0xffc2;\n            frame.precision = data[offset++];\n            const sofScanLines = readUint16(data, offset);\n            offset += 2;\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16(data, offset);\n            offset += 2;\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++],\n              componentId;\n            var maxH = 0,\n              maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h,\n                v,\n                quantizationId: qId,\n                quantizationTable: null, // See comment below.\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n\n          case 0xffc4: // DHT (Define Huffman Tables)\n            const huffmanLength = readUint16(data, offset);\n            offset += 2;\n            for (i = 2; i < huffmanLength; ) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += codeLengths[j] = data[offset];\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n\n              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n                huffmanTableSpec & 15\n              ] = buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n\n          case 0xffdd: // DRI (Define Restart Interval)\n            offset += 2; // Skip marker length.\n\n            resetInterval = readUint16(data, offset);\n            offset += 2;\n            break;\n\n          case 0xffda: // SOS (Start of Scan)\n            // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n            // of the first scan segment and may only occur once in an image.\n            // Furthermore, to prevent an infinite loop, do *not* attempt to\n            // parse DNL markers during re-parsing of the JPEG scan data.\n            const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n            offset += 2; // Skip marker length.\n\n            var selectorsCount = data[offset++];\n            var components = [],\n              component;\n            for (i = 0; i < selectorsCount; i++) {\n              const index = data[offset++];\n              var componentIndex = frame.componentIds[index];\n              component = frame.components[componentIndex];\n              component.index = index;\n              var tableSpec = data[offset++];\n              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n              components.push(component);\n            }\n            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(\n                data,\n                offset,\n                frame,\n                components,\n                resetInterval,\n                spectralStart,\n                spectralEnd,\n                successiveApproximation >> 4,\n                successiveApproximation & 15,\n                parseDNLMarker\n              );\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n                return this.parse(data, { dnlScanLines: ex.scanLines });\n              } else if (ex instanceof EOIMarkerError) {\n                warn(`${ex.message} -- ignoring the rest of the image data.`);\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n\n          case 0xffdc: // DNL (Define Number of Lines)\n            // Ignore the marker, since it's being handled in `decodeScan`.\n            offset += 4;\n            break;\n\n          case 0xffff: // Fill bytes\n            if (data[offset] !== 0xff) {\n              // Avoid skipping a valid marker.\n              offset--;\n            }\n            break;\n\n          default:\n            // Could be incorrect encoding -- the last 0xFF byte of the previous\n            // block could have been eaten by the encoder, hence we fallback to\n            // `startPos = offset - 3` when looking for the next valid marker.\n            const nextFileMarker = findNextFileMarker(\n              data,\n              /* currentPos = */ offset - 2,\n              /* startPos = */ offset - 3\n            );\n            if (nextFileMarker && nextFileMarker.invalid) {\n              warn(\n                \"JpegImage.parse - unexpected data, current marker is: \" +\n                  nextFileMarker.invalid\n              );\n              offset = nextFileMarker.offset;\n              break;\n            }\n            if (offset >= data.length - 1) {\n              warn(\n                \"JpegImage.parse - reached the end of the image data \" +\n                  \"without finding an EOI marker (0xFFD9).\"\n              );\n              break markerLoop;\n            }\n            throw new JpegError(\n              \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n            );\n        }\n        fileMarker = readUint16(data, offset);\n        offset += 2;\n      }\n\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n\n        // Prevent errors when DQT markers are placed after SOF{n} markers,\n        // by assigning the `quantizationTable` entry after the entire image\n        // has been parsed (fixes issue7406.pdf).\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n\n        this.components.push({\n          index: component.index,\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn,\n        });\n      }\n      this.numComponents = this.components.length;\n      return undefined;\n    },\n\n    _getLinearizedBlockData(width, height, isSourcePDF = false) {\n      var scaleX = this.width / width,\n        scaleY = this.height / height;\n\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n      let lastComponentScaleX;\n\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = (component.blocksPerLine + 1) << 3;\n        // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n        // component data, that's only necessary when `componentScaleX` changes.\n        if (componentScaleX !== lastComponentScaleX) {\n          for (x = 0; x < width; x++) {\n            j = 0 | (x * componentScaleX);\n            xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n          }\n          lastComponentScaleX = componentScaleX;\n        }\n        // linearize the blocks of the component\n        for (y = 0; y < height; y++) {\n          j = 0 | (y * componentScaleY);\n          index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n\n      // decodeTransform contains pairs of multiplier (-256..256) and additive\n      let transform = this._decodeTransform;\n\n      // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n      // (this can be observed by extracting the raw image data).\n      // Since the conversion algorithms (see below) were written primarily for\n      // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n      // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n      //\n      // Unfortunately it's not (always) possible to tell, from the image data\n      // alone, if it needs to be inverted. Thus in an attempt to provide better\n      // out-of-box behaviour when `JpegImage` is used standalone, default to\n      // inverting JPEG (CMYK) images if and only if the image data does *not*\n      // come from a PDF file and no `decodeTransform` was passed by the user.\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        // prettier-ignore\n        transform = new Int32Array([\n          -256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n\n      if (transform) {\n        for (i = 0; i < dataLength; ) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        // The adobe transform marker overrides any previous setting.\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          // If the Adobe transform marker is not present and the image\n          // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n          // then the colours should *not* be transformed.\n          return false;\n        } else if (\n          this.components[0].index === /* \"R\" = */ 0x52 &&\n          this.components[1].index === /* \"G\" = */ 0x47 &&\n          this.components[2].index === /* \"B\" = */ 0x42\n        ) {\n          // If the three components are indexed as RGB in ASCII\n          // then the colours should *not* be transformed.\n          return false;\n        }\n        return true;\n      }\n      // `this.numComponents !== 3`\n      if (this._colorTransform === 1) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n        // then the colours should be transformed.\n        return true;\n      }\n      return false;\n    },\n\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          -122.67195406894 +\n          Cb *\n            (-6.60635669420364e-5 * Cb +\n              0.000437130475926232 * Cr -\n              5.4080610064599e-5 * Y +\n              0.00048449797120281 * k -\n              0.154362151871126) +\n          Cr *\n            (-0.000957964378445773 * Cr +\n              0.000817076911346625 * Y -\n              0.00477271405408747 * k +\n              1.53380253221734) +\n          Y *\n            (0.000961250184130688 * Y -\n              0.00266257332283933 * k +\n              0.48357088451265) +\n          k * (-0.000336197177618394 * k + 0.484791561490776);\n\n        data[offset++] =\n          107.268039397724 +\n          Cb *\n            (2.19927104525741e-5 * Cb -\n              0.000640992018297945 * Cr +\n              0.000659397001245577 * Y +\n              0.000426105652938837 * k -\n              0.176491792462875) +\n          Cr *\n            (-0.000778269941513683 * Cr +\n              0.00130872261408275 * Y +\n              0.000770482631801132 * k -\n              0.151051492775562) +\n          Y *\n            (0.00126935368114843 * Y -\n              0.00265090189010898 * k +\n              0.25802910206845) +\n          k * (-0.000318913117588328 * k - 0.213742400323665);\n\n        data[offset++] =\n          -20.810012546947 +\n          Cb *\n            (-0.000570115196973677 * Cb -\n              2.63409051004589e-5 * Cr +\n              0.0020741088115012 * Y -\n              0.00288260236853442 * k +\n              0.814272968359295) +\n          Cr *\n            (-1.53496057440975e-5 * Cr -\n              0.000132689043961446 * Y +\n              0.000560833691242812 * k -\n              0.195152027534049) +\n          Y *\n            (0.00174418132927582 * Y -\n              0.00255243321439347 * k +\n              0.116935020465145) +\n          k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n        // K in data[i + 3] is unchanged\n      }\n      return data;\n    },\n\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i];\n        m = data[i + 1];\n        y = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] =\n          255 +\n          c *\n            (-0.00006747147073602441 * c +\n              0.0008379262121013727 * m +\n              0.0002894718188643294 * y +\n              0.003264231057537806 * k -\n              1.1185611867203937) +\n          m *\n            (0.000026374107616089405 * m -\n              0.00008626949158638572 * y -\n              0.0002748769067499491 * k -\n              0.02155688794978967) +\n          y *\n            (-0.00003878099212869363 * y -\n              0.0003267808279485286 * k +\n              0.0686742238595345) -\n          k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.00013596372813588848 * c +\n              0.000924537132573585 * m +\n              0.00010567359618683593 * y +\n              0.0004791864687436512 * k -\n              0.3109689587515875) +\n          m *\n            (-0.00023545346108370344 * m +\n              0.0002702845253534714 * y +\n              0.0020200308977307156 * k -\n              0.7488052167015494) +\n          y *\n            (0.00006834815998235662 * y +\n              0.00015168452363460973 * k -\n              0.09751927774728933) -\n          k * (0.00031891311758832814 * k + 0.7364883807733168);\n\n        data[offset++] =\n          255 +\n          c *\n            (0.000013598650411385307 * c +\n              0.00012423956175490851 * m +\n              0.0004751985097583589 * y -\n              0.0000036729317476630422 * k -\n              0.05562186980264034) +\n          m *\n            (0.00016141380598724676 * m +\n              0.0009692239130725186 * y +\n              0.0007782692450036253 * k -\n              0.44015232367526463) +\n          y *\n            (5.068882914068769e-7 * y +\n              0.0017778369011375071 * k -\n              0.7591454649749609) -\n          k * (0.0003435319965105553 * k + 0.7063770186160144);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          isSourcePDF === true,\n          'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n        );\n      }\n      if (this.numComponents > 4) {\n        throw new JpegError(\"Unsupported color mode\");\n      }\n      // Type of data: Uint8ClampedArray(width * height * numComponents)\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    },\n  };\n\n  return JpegImage;\n})();\n\nexport { JpegImage };\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 { DecodeStream } from \"./stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nconst JpxStream = (function JpxStreamClosure() {\n  // eslint-disable-next-line no-shadow\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpxStream.prototype, \"bytes\", {\n    get: function JpxStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpxStream.prototype.ensureBuffer = function (requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpxStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n\n  return JpxStream;\n})();\n\nexport { JpxStream };\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 { BaseException, info, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`);\n  }\n}\n\nvar JpxImage = (function JpxImageClosure() {\n  // Table E.1\n  var SubbandsGainLog2 = {\n    LL: 0,\n    LH: 1,\n    HL: 1,\n    HH: 2,\n  };\n\n  // eslint-disable-next-line no-shadow\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n      var head = readUint16(data, 0);\n      // No box header, immediate start of codestream (SOC)\n      if (head === 0xff4f) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n\n      var position = 0,\n        length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = readUint32(data, position);\n        var tbox = readUint32(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          // XLBox: read UInt64 according to spec.\n          // JavaScript's int precision of 53 bit should be sufficient here.\n          lbox =\n            readUint32(data, position) * 4294967296 +\n            readUint32(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError(\"Invalid box field size\");\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6a703268: // 'jp2h'\n            jumpDataLength = false; // parsing child boxes\n            break;\n          case 0x636f6c72: // 'colr'\n            // Colorspaces are not used, the CS from the PDF is used.\n            var method = data[position];\n            if (method === 1) {\n              // enumerated colorspace\n              var colorspace = readUint32(data, position + 3);\n              switch (colorspace) {\n                case 16: // this indicates a sRGB colorspace\n                case 17: // this indicates a grayscale colorspace\n                case 18: // this indicates a YUV colorspace\n                  break;\n                default:\n                  warn(\"Unknown colorspace \" + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              info(\"ICC profile not supported\");\n            }\n            break;\n          case 0x6a703263: // 'jp2c'\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6a502020: // 'jP\\024\\024'\n            if (readUint32(data, position) !== 0x0d0a870a) {\n              warn(\"Invalid JP2 signature\");\n            }\n            break;\n          // The following header types are valid but currently not used:\n          case 0x6a501a1a: // 'jP\\032\\032'\n          case 0x66747970: // 'ftyp'\n          case 0x72726571: // 'rreq'\n          case 0x72657320: // 'res '\n          case 0x69686472: // 'ihdr'\n            break;\n          default:\n            var headerType = String.fromCharCode(\n              (tbox >> 24) & 0xff,\n              (tbox >> 16) & 0xff,\n              (tbox >> 8) & 0xff,\n              tbox & 0xff\n            );\n            warn(\"Unsupported header type \" + tbox + \" (\" + headerType + \")\");\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = (oldByte << 8) | newByte;\n        // Image and tile size (SIZ)\n        if (code === 0xff51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0; // Byte 4\n          var Ysiz = stream.getInt32() >>> 0; // Byte 8\n          var XOsiz = stream.getInt32() >>> 0; // Byte 12\n          var YOsiz = stream.getInt32() >>> 0; // Byte 16\n          stream.skip(16);\n          var Csiz = stream.getUint16(); // Byte 36\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          // Results are always returned as `Uint8ClampedArray`s.\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError(\"No size marker found in JPX stream\");\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = readUint16(data, position);\n          position += 2;\n\n          var length = 0,\n            j,\n            sqcd,\n            spqcds,\n            spqcdSize,\n            scalarExpounded,\n            tile;\n          switch (code) {\n            case 0xff4f: // Start of codestream (SOC)\n              context.mainHeader = true;\n              break;\n            case 0xffd9: // End of codestream (EOC)\n              break;\n            case 0xff51: // Image and tile size (SIZ)\n              length = readUint16(data, position);\n              var siz = {};\n              siz.Xsiz = readUint32(data, position + 4);\n              siz.Ysiz = readUint32(data, position + 8);\n              siz.XOsiz = readUint32(data, position + 12);\n              siz.YOsiz = readUint32(data, position + 16);\n              siz.XTsiz = readUint32(data, position + 20);\n              siz.YTsiz = readUint32(data, position + 24);\n              siz.XTOsiz = readUint32(data, position + 28);\n              siz.YTOsiz = readUint32(data, position + 32);\n              var componentsCount = readUint16(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7f) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2],\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xff5c: // Quantization default (QCD)\n              length = readUint16(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcd.noQuantization = spqcdSize === 8;\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xff5d: // Quantization component (QCC)\n              length = readUint16(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = readUint16(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1f) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error(\"Invalid SQcd value \" + sqcd);\n              }\n              qcc.noQuantization = spqcdSize === 8;\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xff52: // Coding style default (COD)\n              length = readUint16(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = readUint16(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xf) + 2;\n              cod.ycb = (data[j++] & 0xf) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xf,\n                    PPy: precinctsSize >> 4,\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push(\"selectiveArithmeticCodingBypass\");\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push(\"resetContextProbabilities\");\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push(\"terminationOnEachCodingPass\");\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push(\"verticallyStripe\");\n              }\n              if (cod.predictableTermination) {\n                unsupported.push(\"predictableTermination\");\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error(\n                  \"Unsupported COD options (\" + unsupported.join(\", \") + \")\"\n                );\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xff90: // Start of tile-part (SOT)\n              length = readUint16(data, position);\n              tile = {};\n              tile.index = readUint16(data, position + 2);\n              tile.length = readUint32(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                // reset component specific settings\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0); // clone of the global COC\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0); // clone of the global COC\n              }\n              context.currentTile = tile;\n              break;\n            case 0xff93: // Start of data (SOD)\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n\n              // moving to the end of the data\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xff55: // Tile-part lengths, main header (TLM)\n            case 0xff57: // Packet length, main header (PLM)\n            case 0xff58: // Packet length, tile-part header (PLT)\n            case 0xff64: // Comment (COM)\n              length = readUint16(data, position);\n              // skipping content\n              break;\n            case 0xff53: // Coding style component (COC)\n              throw new Error(\n                \"Codestream code 0xFF53 (COC) is not implemented\"\n              );\n            default:\n              throw new Error(\"Unknown codestream code: \" + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          warn(\"JPX: Trying to recover from: \" + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    },\n  };\n  function calculateComponentDimensions(component, siz) {\n    // Section B.2 Component mapping\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    // Section B.3 Division into tile and tile-components\n    var tile,\n      tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    // calculate codeblock size as described in section B.7\n    result.xcb_ =\n      r > 0\n        ? Math.min(codOrCoc.xcb, result.PPx - 1)\n        : Math.min(codOrCoc.xcb, result.PPx);\n    result.ycb_ =\n      r > 0\n        ? Math.min(codOrCoc.ycb, result.PPy - 1)\n        : Math.min(codOrCoc.ycb, result.PPy);\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    // Section B.6 Division resolution to precincts\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    // Jasper introduces codeblock groups for mapping each subband codeblocks\n    // to precincts. Precinct partition divides a resolution according to width\n    // and height parameters. The subband that belongs to the resolution level\n    // has a different size than the level, unless it is the zero resolution.\n\n    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n    // The precinct partitioning for a particular subband is derived from a\n    // partitioning of its parent LL band (i.e., the LL band at the next higher\n    // resolution level)... The LL band associated with each resolution level is\n    // divided into precincts... Each of the resulting precinct regions is then\n    // mapped into its child subbands (if any) at the next lower resolution\n    // level. This is accomplished by using the coordinate transformation\n    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n    // coordinates of a point in the LL band and child subband, respectively.\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n    var numprecinctswide =\n      resolution.trx1 > resolution.trx0\n        ? Math.ceil(resolution.trx1 / precinctWidth) -\n          Math.floor(resolution.trx0 / precinctWidth)\n        : 0;\n    var numprecinctshigh =\n      resolution.try1 > resolution.try0\n        ? Math.ceil(resolution.try1 / precinctHeight) -\n          Math.floor(resolution.try0 / precinctHeight)\n        : 0;\n    var numprecincts = numprecinctswide * numprecinctshigh;\n\n    resolution.precinctParameters = {\n      precinctWidth,\n      precinctHeight,\n      numprecinctswide,\n      numprecinctshigh,\n      numprecincts,\n      precinctWidthInSubband,\n      precinctHeightInSubband,\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    // Section B.7 Division sub-band into code-blocks\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1),\n        };\n\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n        // Calculate precinct number for this codeblock, codeblock position\n        // should be relative to its subband, use actual dimension and position\n        // See comment about codeblock group width and height\n        var pi = Math.floor(\n          (codeblock.tbx0_ - subband.tbx0) /\n            precinctParameters.precinctWidthInSubband\n        );\n        var pj = Math.floor(\n          (codeblock.tby0_ - subband.tby0) /\n            precinctParameters.precinctHeightInSubband\n        );\n        precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n\n        if (\n          codeblock.tbx1_ <= codeblock.tbx0_ ||\n          codeblock.tby1_ <= codeblock.tby0_\n        ) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        // building precinct for the sub-band\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j,\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1,\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    // Section B.10.8 Order of info in packet\n    var subbands = resolution.subbands;\n    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber,\n      codeblocks: precinctCodeblocks,\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var l = 0,\n      r = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.1 Layer-resolution-component-position\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount\n      );\n    }\n\n    var r = 0,\n      l = 0,\n      i = 0,\n      k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.2 Resolution-layer-component-position\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts; ) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      const component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(\n        maxDecompositionLevelsCount,\n        component.codingStyleParameters.decompositionLevelsCount\n      );\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(\n      maxDecompositionLevelsCount + 1\n    );\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(\n            maxNumPrecincts,\n            resolutions[r].precinctParameters.numprecincts\n          );\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.3 Resolution-position-component-layer\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            const component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.4 Position-component-resolution-layer\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount =\n              component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale =\n                precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.5 Component-position-resolution-layer\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount =\n          component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution\n              );\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount; ) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError(\"Out of packets\");\n    };\n  }\n  function getPrecinctIndexIfExist(\n    pxIndex,\n    pyIndex,\n    sizeInImageScale,\n    precinctIterationSizes,\n    resolution\n  ) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (\n      posX % sizeInImageScale.width !== 0 ||\n      posY % sizeInImageScale.height !== 0\n    ) {\n      return null;\n    }\n    var startPrecinctRowIndex =\n      (posY / sizeInImageScale.width) *\n      resolution.precinctParameters.numprecinctswide;\n    return posX / sizeInImageScale.height + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution =\n          scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution =\n          scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(\n          minWidthCurrentComponent,\n          widthCurrentResolution\n        );\n        minHeightCurrentComponent = Math.min(\n          minHeightCurrentComponent,\n          heightCurrentResolution\n        );\n        maxNumWideCurrentComponent = Math.max(\n          maxNumWideCurrentComponent,\n          resolution.precinctParameters.numprecinctswide\n        );\n        maxNumHighCurrentComponent = Math.max(\n          maxNumHighCurrentComponent,\n          resolution.precinctParameters.numprecinctshigh\n        );\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution,\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent,\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth,\n      minHeight,\n      maxNumWide,\n      maxNumHigh,\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    // Creating resolutions and sub-bands for each component\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      // Section B.5 Resolution levels and sub-bands\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << (decompositionLevelsCount - r);\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n\n        var subband;\n        if (r === 0) {\n          // one sub-band (LL) with last decomposition\n          subband = {};\n          subband.type = \"LL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << (decompositionLevelsCount - r + 1);\n          var resolutionSubbands = [];\n          // three sub-bands (HL, LH and HH) with rest of decompositions\n          subband = {};\n          subband.type = \"HL\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"LH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = \"HH\";\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    // Generate the packets sequence\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n          context\n        );\n        break;\n      case 1:\n        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n          context\n        );\n        break;\n      case 2:\n        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n          context\n        );\n        break;\n      case 3:\n        tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n          context\n        );\n        break;\n      case 4:\n        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n          context\n        );\n        break;\n      default:\n        throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer,\n      bufferSize = 0,\n      skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = (buffer << 7) | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = (buffer << 8) | b;\n          bufferSize += 8;\n        }\n        if (b === 0xff) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return (buffer >>> bufferSize) & ((1 << count) - 1);\n    }\n    function skipMarkerIfEqual(value) {\n      if (\n        data[offset + position - 1] === 0xff &&\n        data[offset + position] === value\n      ) {\n        skipBytes(1);\n        return true;\n      } else if (\n        data[offset + position] === 0xff &&\n        data[offset + position + 1] === value\n      ) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        // Skip also marker segment length and packet sequence ID\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [],\n        codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock.included !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          // reading inclusion tree\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct.inclusionTree !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            // building inclusion and zero bit-planes trees\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = log2(codingpasses);\n        // rounding down log2\n        var bits =\n          (codingpasses < 1 << codingpassesLog2\n            ? codingpassesLog2 - 1\n            : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock,\n          codingpasses,\n          dataLength: codedDataLength,\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock.data === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses,\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(\n    coefficients,\n    levelWidth,\n    levelHeight,\n    subband,\n    delta,\n    mb,\n    reversible,\n    segmentationSymbolUsed\n  ) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n    var bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock.data === undefined) {\n        continue;\n      }\n\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(\n        blockWidth,\n        blockHeight,\n        codeblock.subbandType,\n        codeblock.zeroBitPlanes,\n        mb\n      );\n      currentCodingpassType = 2; // first bit plane starts from cleanup\n\n      // collect data\n      var data = codeblock.data,\n        totalLength = 0,\n        codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      // decoding the item\n      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n\n      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      // Do the interleaving of Section F.3.3 here, so we do not need\n      // to copy later. LL level is not interleaved, just copied.\n      var interleave = subband.type !== \"LL\";\n      for (j = 0; j < blockHeight; j++) {\n        var row = (offset / width) | 0; // row in the non-interleaved subband\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? levelOffset + (offset << 1) : offset;\n            if (reversible && nb >= mb) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << (mb - nb));\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount =\n      codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = reversible\n      ? new ReversibleTransform()\n      : new IrreversibleTransform();\n\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      // Allocate space for the whole sublevel.\n      var coefficients = new Float32Array(width * height);\n\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          // formula E-5\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n\n        // calculate quantization coefficient (Section E.1.1.1)\n        var delta = reversible\n          ? 1\n          : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n        var mb = guardBits + epsilon - 1;\n\n        // In the first resolution level, copyCoefficients will fill the\n        // whole array with coefficients. In the succeeding passes,\n        // copyCoefficients will consecutively fill in the values that belong\n        // to the interleaved positions of the HL, LH, and HH coefficients.\n        // The LL coefficients will then be interleaved in Transform.iterate().\n        copyCoefficients(\n          coefficients,\n          width,\n          height,\n          subband,\n          delta,\n          mb,\n          reversible,\n          segmentationSymbolUsed\n        );\n      }\n      subbandCoefficients.push({\n        width,\n        height,\n        items: coefficients,\n      });\n    }\n\n    var result = transform.calculate(\n      subbandCoefficients,\n      component.tcx0,\n      component.tcy0\n    );\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items,\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out,\n      };\n\n      // Section G.2.2 Inverse multi component transform\n      var shift, offset;\n      var pos = 0,\n        j,\n        jj,\n        y0,\n        y1,\n        y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n\n        // HACK: The multiple component transform formulas below assume that\n        // all components have the same precision. With this in mind, we\n        // compute shift and offset only once.\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          // inverse irreversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = (y0 + 1.402 * y2) >> shift;\n            out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n            out[pos++] = (y0 + 1.772 * y1) >> shift;\n          }\n        } else {\n          // inverse reversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            const g = y0 - ((y2 + y1) >> 2);\n\n            out[pos++] = (g + y2) >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = (g + y1) >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = (y3items[j] + offset) >> shift;\n          }\n        }\n      } else {\n        // no multi-component transform\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = (items[j] + offset) >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc =\n        context.currentTile.QCC[c] !== undefined\n          ? context.currentTile.QCC[c]\n          : context.currentTile.QCD;\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc =\n        context.currentTile.COC[c] !== undefined\n          ? context.currentTile.COC[c]\n          : context.currentTile.COD;\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n\n  // Section B.10.2 Tag trees\n  var TagTree = (function TagTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function TagTree(width, height) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width,\n          height,\n          items: [],\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0,\n          value = 0,\n          level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return TagTree;\n  })();\n\n  var InclusionTree = (function InclusionTreeClosure() {\n    // eslint-disable-next-line no-shadow\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n\n        var level = {\n          width,\n          height,\n          items,\n        };\n        this.levels.push(level);\n\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n\n          if (value === 0xff) {\n            break;\n          }\n\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            // already know about this one, propagating the value to top levels\n            this.propagateValues();\n            return false;\n          }\n\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xff;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return InclusionTree;\n  })();\n\n  // Section D. Coefficient bit modeling\n  var BitModel = (function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    // Table D-1\n    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n    // prettier-ignore\n    var LLAndLHContextsLabel = new Uint8Array([\n      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n    ]);\n    // prettier-ignore\n    var HLContextLabel = new Uint8Array([\n      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n    ]);\n    // prettier-ignore\n    var HHContextLabel = new Uint8Array([\n      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n    ]);\n\n    // eslint-disable-next-line no-shadow\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      var coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        // We have 17 contexts that are accessed via context labels,\n        // plus the uniform and runlength context.\n        this.contexts = new Int8Array(19);\n\n        // Contexts are packed into 1 byte:\n        // highest 7 bits carry the index, lowest bit carries mps\n        this.contexts[0] = (4 << 1) | 0;\n        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n      },\n      setNeighborsSignificance: function BitModel_setNeighborsSignificance(\n        row,\n        column,\n        index\n      ) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width,\n          height = this.height;\n        var left = column > 0;\n        var right = column + 1 < width;\n        var i;\n\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              // clear processed flag first\n              processingFlags[index] &= processedInverseMask;\n\n              if (\n                coefficentsMagnitude[index] ||\n                !neighborsSignificance[index]\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n\n        // calculate horizontal contribution\n        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n\n        // calculate vertical contribution and combine with the horizontal\n        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n              // significant but not those that have just become\n              if (\n                !coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                // first refinement\n                var significance = neighborsSignificance[index] & 127;\n                contextLabel = significance === 0 ? 15 : 14;\n              }\n\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] =\n                (coefficentsMagnitude[index] << 1) | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n          height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            // using the property: labels[neighborsSignificance[index]] === 0\n            // when neighborsSignificance[index] === 0\n            var allEmpty =\n              checkAllEmpty &&\n              processingFlags[index0] === 0 &&\n              processingFlags[index0 + oneRowDown] === 0 &&\n              processingFlags[index0 + twoRowsDown] === 0 &&\n              processingFlags[index0 + threeRowsDown] === 0 &&\n              neighborsSignificance[index0] === 0 &&\n              neighborsSignificance[index0 + oneRowDown] === 0 &&\n              neighborsSignificance[index0 + twoRowsDown] === 0 &&\n              neighborsSignificance[index0 + threeRowsDown] === 0;\n            var i1 = 0,\n              index = index0;\n            var i = i0,\n              sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent = decoder.readBit(\n                contexts,\n                RUNLENGTH_CONTEXT\n              );\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue; // next column\n              }\n              i1 =\n                (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (\n                coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0\n              ) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol =\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n          (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n          decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xa) {\n          throw new JpxError(\"Invalid segmentation symbol\");\n        }\n      },\n    };\n\n    return BitModel;\n  })();\n\n  // Section F, Discrete wavelet transformation\n  var Transform = (function TransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function Transform() {}\n\n    Transform.prototype.calculate = function transformCalculate(\n      subbands,\n      u0,\n      v0\n    ) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      // Section F.3.7 extending... using max extension of 4\n      var i1 = offset - 1,\n        j1 = offset + 1;\n      var i2 = offset + size - 2,\n        j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(\n      ll,\n      hl_lh_hh,\n      u0,\n      v0\n    ) {\n      var llWidth = ll.width,\n        llHeight = ll.height,\n        llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n\n      // Interleave LL according to Section F.3.3\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      // The LL band is not needed anymore.\n      llItems = ll.items = null;\n\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n      // Section F.3.4 HOR_SR\n      if (width === 1) {\n        // if width = 1, when u0 even keep items as is, when odd divide by 2\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n\n          items.set(\n            rowBuffer.subarray(bufferPadding, bufferPadding + width),\n            k\n          );\n        }\n      }\n\n      // Accesses to the items array can take long, because it may not fit into\n      // CPU cache and has to be fetched from main memory. Since subsequent\n      // accesses to the items array are not local when reading columns, we\n      // have a cache miss every time. To reduce cache misses, get up to\n      // 'numBuffers' items at a time and store them into the individual\n      // buffers. The colBuffers should be small enough to fit into CPU cache.\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b,\n        currentBuffer = 0;\n      ll = bufferPadding + height;\n\n      // Section F.3.5 VER_SR\n      if (height === 1) {\n        // if height = 1, when v0 even keep items as is, when odd divide by 2\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          // if we ran out of buffers, copy several image columns at once\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n\n          // If this is last buffer in this group of buffers, flush all buffers.\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n\n      return {\n        width,\n        height,\n        items,\n      };\n    };\n    return Transform;\n  })();\n\n  // Section 3.8.2 Irreversible 9-7 filter\n  var IrreversibleTransform = (function IrreversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n\n      // step 1 is combined with step 3\n\n      // step 2\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n\n      // step 1 & 3\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n\n      // step 4\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 5\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 6\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n\n    return IrreversibleTransform;\n  })();\n\n  // Section 3.8.1 Reversible 5-3 filter\n  var ReversibleTransform = (function ReversibleTransformClosure() {\n    // eslint-disable-next-line no-shadow\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter = function reversibleTransformFilter(\n      x,\n      offset,\n      length\n    ) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n      }\n\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += (x[j - 1] + x[j + 1]) >> 1;\n      }\n    };\n\n    return ReversibleTransform;\n  })();\n\n  return JpxImage;\n})();\n\nexport { JpxImage };\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  bytesToString,\n  FormatError,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./stream.js\";\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i,\n      j = 0,\n      tmp,\n      keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i,\n        n = data.length,\n        tmp,\n        tmp2;\n      var a = this.a,\n        b = this.b,\n        s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = (a + 1) & 0xff;\n        tmp = s[a];\n        b = (b + tmp) & 0xff;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    },\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n  ARCFourCipher.prototype.encrypt = ARCFourCipher.prototype.encryptBlock;\n\n  return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n  // prettier-ignore\n  var r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n  // prettier-ignore\n  var k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    var h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        var tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\nvar Word64 = (function Word64Closure() {\n  // eslint-disable-next-line no-shadow\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n      this.high ^= word.high;\n      this.low ^= word.low;\n    },\n\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = (this.high >>> (places - 32)) | 0;\n        this.high = 0;\n      } else {\n        this.low = (this.low >>> places) | (this.high << (32 - places));\n        this.high = (this.high >>> places) | 0;\n      }\n    },\n\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << (places - 32);\n        this.low = 0;\n      } else {\n        this.high = (this.high << places) | (this.low >>> (32 - places));\n        this.low = this.low << places;\n      }\n    },\n\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = (low >>> places) | (high << (32 - places));\n      this.high = (high >>> places) | (low << (32 - places));\n    },\n\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xffffffff) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = (this.high >>> 24) & 0xff;\n      bytes[offset + 1] = (this.high >> 16) & 0xff;\n      bytes[offset + 2] = (this.high >> 8) & 0xff;\n      bytes[offset + 3] = this.high & 0xff;\n      bytes[offset + 4] = (this.low >>> 24) & 0xff;\n      bytes[offset + 5] = (this.low >> 16) & 0xff;\n      bytes[offset + 6] = (this.low >> 8) & 0xff;\n      bytes[offset + 7] = this.low & 0xff;\n    },\n\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    },\n  };\n  return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  // prettier-ignore\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    var h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    var w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      var a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  var k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    // initial hash values\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    var d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    var g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    var t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0),\n      tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n\n  return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullCipher() {}\n\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    },\n    encrypt: function NullCipher_encrypt(data) {\n      return data;\n    },\n  };\n\n  return NullCipher;\n})();\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    // prettier-ignore\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    // prettier-ignore\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    // prettier-ignore\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    // prettier-ignore\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 = t1 ^ rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 = t1 ^ r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nvar PDF17 = (function PDF17Closure() {\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF17() {}\n\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF17_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PDF20() {}\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(\n      password,\n      userValidationSalt,\n      userPassword\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(\n      password,\n      ownerKeySalt,\n      userBytes,\n      ownerEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF20_getUserKey(\n      password,\n      userKeySalt,\n      userEncryption\n    ) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    },\n  };\n  return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n  // eslint-disable-next-line no-shadow\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new DecryptStream(\n        stream,\n        length,\n        function cipherTransformDecryptStream(data, finalize) {\n          return cipher.decryptBlock(data, finalize);\n        }\n      );\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = stringToBytes(s);\n      data = cipher.decryptBlock(data, true);\n      return bytesToString(data);\n    },\n    encryptString: function CipherTransform_encryptString(s) {\n      const cipher = new this.StringCipherConstructor();\n      if (cipher instanceof AESBaseCipher) {\n        // Append some chars equal to \"16 - (M mod 16)\"\n        // where M is the string length (see section 7.6.2 in PDF specification)\n        // to have a final string where the length is a multiple of 16.\n        const strLen = s.length;\n        const pad = 16 - (strLen % 16);\n        if (pad !== 16) {\n          s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));\n        }\n\n        // Generate an initialization vector\n        const iv = new Uint8Array(16);\n        if (typeof crypto !== \"undefined\") {\n          crypto.getRandomValues(iv);\n        } else {\n          for (let i = 0; i < 16; i++) {\n            iv[i] = Math.floor(256 * Math.random());\n          }\n        }\n\n        let data = stringToBytes(s);\n        data = cipher.encrypt(data, iv);\n\n        const buf = new Uint8Array(16 + data.length);\n        buf.set(iv);\n        buf.set(data, 16);\n\n        return bytesToString(buf);\n      }\n\n      let data = stringToBytes(s);\n      data = cipher.encrypt(data);\n      return bytesToString(data);\n    },\n  };\n  return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  // prettier-ignore\n  var defaultPasswordBytes = new Uint8Array([\n    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize),\n      i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n),\n        k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32),\n      i = 0,\n      j,\n      n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes),\n        k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  var identityName = Name.get(\"Identity\");\n\n  // eslint-disable-next-line no-shadow\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get(\"Filter\");\n    if (!isName(filter, \"Standard\")) {\n      throw new FormatError(\"unknown encryption method\");\n    }\n    this.dict = dict;\n    var algorithm = dict.get(\"V\");\n    if (\n      !Number.isInteger(algorithm) ||\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\n    ) {\n      throw new FormatError(\"unsupported encryption algorithm\");\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get(\"Length\");\n    if (!keyLength) {\n      // Spec asks to rely on encryption dictionary's Length entry, however\n      // some PDFs don't have it. Trying to recover.\n      if (algorithm <= 3) {\n        // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n        keyLength = 40;\n      } else {\n        // Trying to find default handler -- it usually has Length.\n        var cfDict = dict.get(\"CF\");\n        var streamCryptoName = dict.get(\"StmF\");\n        if (isDict(cfDict) && isName(streamCryptoName)) {\n          cfDict.suppressEncryption = true; // See comment below.\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n          if (keyLength < 40) {\n            // Sometimes it's incorrect value of bits, generators specify bytes.\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new FormatError(\"invalid key length\");\n    }\n\n    // prepare keys\n    var ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n    var userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n    var flags = dict.get(\"P\");\n    var revision = dict.get(\"R\");\n    // meaningful when V is 4 or 5\n    var encryptMetadata =\n      (algorithm === 4 || algorithm === 5) &&\n      dict.get(\"EncryptMetadata\") !== false;\n    this.encryptMetadata = encryptMetadata;\n\n    var fileIdBytes = stringToBytes(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch (ex) {\n          warn(\n            \"CipherTransformFactory: \" +\n              \"Unable to convert UTF8 encoded password.\"\n          );\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        passwordBytes,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    } else {\n      var ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(32, 40);\n      var ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n      var uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n      var userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(32, 40);\n      var userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n      var ownerEncryption = stringToBytes(dict.get(\"OE\"));\n      var userEncryption = stringToBytes(dict.get(\"UE\"));\n      var perms = stringToBytes(dict.get(\"Perms\"));\n      encryptionKey = createEncryptionKey20(\n        revision,\n        passwordBytes,\n        ownerPassword,\n        ownerValidationSalt,\n        ownerKeySalt,\n        uBytes,\n        userPassword,\n        userValidationSalt,\n        userKeySalt,\n        ownerEncryption,\n        userEncryption,\n        perms\n      );\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException(\n        \"No password given\",\n        PasswordResponses.NEED_PASSWORD\n      );\n    } else if (!encryptionKey && password) {\n      // Attempting use the password as an owner password\n      var decodedPassword = decodeUserPassword(\n        passwordBytes,\n        ownerPassword,\n        revision,\n        keyLength\n      );\n      encryptionKey = prepareKeyData(\n        fileIdBytes,\n        decodedPassword,\n        ownerPassword,\n        userPassword,\n        flags,\n        revision,\n        keyLength,\n        encryptMetadata\n      );\n    }\n\n    if (!encryptionKey) {\n      throw new PasswordException(\n        \"Incorrect Password\",\n        PasswordResponses.INCORRECT_PASSWORD\n      );\n    }\n\n    this.encryptionKey = encryptionKey;\n\n    if (algorithm >= 4) {\n      var cf = dict.get(\"CF\");\n      if (isDict(cf)) {\n        // The 'CF' dictionary itself should not be encrypted, and by setting\n        // `suppressEncryption` we can prevent an infinite loop inside of\n        // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n        // (fixes issue7665.pdf).\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get(\"StmF\") || identityName;\n      this.strf = dict.get(\"StrF\") || identityName;\n      this.eff = dict.get(\"EFF\") || this.stmf;\n    }\n  }\n\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9),\n      i,\n      n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  CipherTransformFactory.prototype = {\n    createCipherTransform: function CipherTransformFactory_createCipherTransform(\n      num,\n      gen\n    ) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    },\n  };\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\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  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream, Name, Ref } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  /**\n   * @private\n   */\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (!parsedColorSpace) {\n      throw new Error(\n        'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n      );\n    }\n    let csName, csRef;\n    if (cacheKey instanceof Ref) {\n      csRef = cacheKey;\n\n      // If parsing succeeded, we know that this call cannot throw.\n      cacheKey = xref.fetch(cacheKey);\n    }\n    if (cacheKey instanceof Name) {\n      csName = cacheKey.name;\n    }\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (cacheKey instanceof Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        // Any errors should be handled during parsing, rather than here.\n      }\n    }\n    if (cacheKey instanceof Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n    return null;\n  }\n\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        !this.getCached(cs, xref, localColorSpaceCache),\n        \"Expected `ColorSpace.getCached` to have been manually checked \" +\n          \"before calling `ColorSpace.parseAsync`.\"\n      );\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  /**\n   * @private\n   */\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case \"DeviceGray\":\n        case \"G\":\n          return this.singletons.gray;\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return this.singletons.rgb;\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return this.singletons.cmyk;\n        case \"Pattern\":\n          return new PatternCS(/* baseCS = */ null);\n        default:\n          if (isDict(resources)) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (isDict(colorSpaces)) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (isName(resourcesCS)) {\n                  return this._parse(\n                    resourcesCS,\n                    xref,\n                    resources,\n                    pdfFunctionFactory\n                  );\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"DeviceGray\":\n        case \"G\":\n          return this.singletons.gray;\n        case \"DeviceRGB\":\n        case \"RGB\":\n          return this.singletons.rgb;\n        case \"DeviceCMYK\":\n        case \"CMYK\":\n          return this.singletons.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n            // Ensure that the number of components are correct,\n            // and also (indirectly) that it is not a PatternCS.\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n          return new PatternCS(baseCS);\n        case \"Indexed\":\n        case \"I\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n      }\n    }\n    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const length = base.numComps * highVal;\n    this.lookup = new Uint8Array(length);\n\n    if (isStream(lookup)) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    // Optimization:\n    // If color is close enough to 1, skip calling the following transform\n    // since calling Math.pow is expensive. If color is larger than\n    // the threshold, the final result is larger than 254.5 since\n    // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n    // 254.50000003134699\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A === 1 ? 1 : A ** cs.GR;\n    const BGG = B === 1 ? 1 : B ** cs.GG;\n    const CGB = C === 1 ? 1 : C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2019 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/* eslint no-var: error */\n\nimport { assert, info, shadow, unreachable } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n  constructor(options) {\n    if (this.constructor === BaseLocalCache) {\n      unreachable(\"Cannot initialize BaseLocalCache.\");\n    }\n    if (!options || !options.onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n    this._imageCache = new RefSetCache();\n  }\n\n  getByName(name) {\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref, data) {\n    unreachable(\"Abstract method `set` called.\");\n  }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (!name) {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (!name && !ref) {\n      throw new Error(\n        'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n      );\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      if (name) {\n        // Optional when `ref` is defined.\n        this._nameRefMap.set(name, ref);\n      }\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  getByName(name) {\n    unreachable(\"Should not call `getByName` method.\");\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (!name) {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MAX_IMAGES_TO_CACHE() {\n    return shadow(this, \"MAX_IMAGES_TO_CACHE\", 10);\n  }\n\n  constructor() {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n        \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n      );\n    }\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    const numPages = pageIndexSet\n      ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n      : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (\n      !this._imageCache.has(ref) &&\n      this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n  }\n\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      return null;\n    }\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    if (!this._imageCache.has(ref)) {\n      return null;\n    }\n    // Ensure that we keep track of all pages containing the image reference.\n    pageIndexSet.add(pageIndex);\n\n    return this._imageCache.get(ref);\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error(\n        'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n      );\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {\n      info(\n        \"GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.\"\n      );\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\nexport {\n  LocalImageCache,\n  LocalColorSpaceCache,\n  LocalFunctionCache,\n  LocalGStateCache,\n  GlobalImageCache,\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/* eslint no-var: error */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  escapeString,\n  getModificationDate,\n  isString,\n  OPS,\n  stringToPDFString,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { Catalog, FileSpec, ObjectLoader } from \"./obj.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { getInheritableProperty } from \"./core_utils.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory) {\n    return pdfManager.ensureCatalog(\"acroForm\").then(acroForm => {\n      return pdfManager.ensure(this, \"_create\", [\n        xref,\n        ref,\n        pdfManager,\n        idFactory,\n        acroForm,\n      ]);\n    });\n  }\n\n  /**\n   * @private\n   */\n  static _create(xref, ref, pdfManager, idFactory, acroForm) {\n    const dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return undefined;\n    }\n\n    const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n      acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n        }\n        warn(\n          'Unimplemented widget field type \"' +\n            fieldType +\n            '\", ' +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!subtype) {\n          warn(\"Annotation is missing the required /Subtype.\");\n        } else {\n          warn(\n            'Unimplemented annotation type \"' +\n              subtype +\n              '\", ' +\n              \"falling back to base annotation.\"\n          );\n        }\n        return new Annotation(parameters);\n    }\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle.\n      if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n  return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      contents: this.contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n    };\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN)\n    );\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this.contents = stringToPDFString(contents || \"\");\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate = isString(modificationDate)\n      ? modificationDate\n      : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    const rgbColor = new Uint8ClampedArray(3);\n    if (!Array.isArray(color)) {\n      this.color = rgbColor;\n      return;\n    }\n\n    switch (color.length) {\n      case 0: // Transparent, which we indicate with a null value\n        this.color = null;\n        break;\n\n      case 1: // Convert grayscale to RGB\n        ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 3: // Convert RGB percentages to RGB\n        ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 4: // Convert CMYK to RGB\n        ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      default:\n        this.color = rgbColor;\n        break;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3]);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys) {\n    return this.appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    if (!this.appearance) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    const appearance = this.appearance;\n    const data = this.data;\n    const appearanceDict = appearance.dict;\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"ColorSpace\",\n      \"Pattern\",\n      \"Shading\",\n      \"XObject\",\n      \"Font\",\n    ]);\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n      return evaluator\n        .getOperatorList({\n          stream: appearance,\n          task,\n          resources,\n          operatorList: opList,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          appearance.reset();\n          return opList;\n        });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    return null;\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (isName(width)) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (Number.isInteger(width)) {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!isName(style)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   */\n  setDashArray(dashArray) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.data.title = stringToPDFString(parent.get(\"T\") || \"\");\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contents = this.contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.title = stringToPDFString(dict.get(\"T\") || \"\");\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = isString(creationDate) ? creationDate : null;\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n    this.ref = params.ref;\n\n    data.annotationType = AnnotationType.WIDGET;\n    data.fieldName = this._constructFieldName(dict);\n\n    const fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n    data.defaultAppearance =\n      getInheritableProperty({ dict, key: \"DA\" }) ||\n      params.acroForm.get(\"DA\") ||\n      \"\";\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n    this.fieldResources =\n      getInheritableProperty({ dict, key: \"DR\" }) ||\n      params.acroForm.get(\"DR\") ||\n      Dict.empty;\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n    // Hide signatures because we cannot validate them, and unset the fieldValue\n    // since it's (most likely) a `Dict` which is non-serializable and will thus\n    // cause errors when sending annotations to the main-thread (issue 10347).\n    if (data.fieldType === \"Sig\") {\n      data.fieldValue = null;\n      this.setFlags(AnnotationFlag.HIDDEN);\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (!isDict(loopDict)) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        break;\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n\n  /**\n   * Decode the given form value.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n   *   form value.\n   * @returns {Array<string>|string|null}\n   */\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue\n        .filter(item => isString(item))\n        .map(item => stringToPDFString(item));\n    } else if (isName(formValue)) {\n      return stringToPDFString(formValue.name);\n    } else if (isString(formValue)) {\n      return stringToPDFString(formValue);\n    }\n    return null;\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    if (!this._hasText) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        renderForms,\n        annotationStorage\n      );\n    }\n\n    return this._getAppearance(evaluator, task, annotationStorage).then(\n      content => {\n        if (this.appearance && content === null) {\n          return super.getOperatorList(\n            evaluator,\n            task,\n            renderForms,\n            annotationStorage\n          );\n        }\n\n        const operatorList = new OperatorList();\n\n        // Even if there is an appearance stream, ignore it. This is the\n        // behaviour used by Adobe Reader.\n        if (!this.data.defaultAppearance || content === null) {\n          return operatorList;\n        }\n\n        const matrix = [1, 0, 0, 1, 0, 0];\n        const bbox = [\n          0,\n          0,\n          this.data.rect[2] - this.data.rect[0],\n          this.data.rect[3] - this.data.rect[1],\n        ];\n\n        const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n        operatorList.addOp(OPS.beginAnnotation, [\n          this.data.rect,\n          transform,\n          matrix,\n        ]);\n\n        const stream = new StringStream(content);\n        return evaluator\n          .getOperatorList({\n            stream,\n            task,\n            resources: this.fieldResources,\n            operatorList,\n          })\n          .then(function () {\n            operatorList.addOp(OPS.endAnnotation, []);\n            return operatorList;\n          });\n      }\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.fieldValue === annotationStorage[this.data.id]) {\n      return null;\n    }\n\n    let appearance = await this._getAppearance(\n      evaluator,\n      task,\n      annotationStorage\n    );\n    if (appearance === null) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const bbox = [\n      0,\n      0,\n      this.data.rect[2] - this.data.rect[0],\n      this.data.rect[3] - this.data.rect[1],\n    ];\n\n    const newRef = evaluator.xref.getNewRef();\n    const AP = new Dict(evaluator.xref);\n    AP.set(\"N\", newRef);\n\n    const value = annotationStorage[this.data.id];\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    let newTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n      appearance = newTransform.encryptString(appearance);\n    }\n\n    dict.set(\"V\", value);\n    dict.set(\"AP\", AP);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const appearanceDict = new Dict(evaluator.xref);\n    appearanceDict.set(\"Length\", appearance.length);\n    appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceDict.set(\"Resources\", this.fieldResources);\n    appearanceDict.set(\"BBox\", bbox);\n\n    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, bufferOriginal, originalTransform);\n    bufferOriginal.push(\"\\nendobj\\n\");\n\n    const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n    writeDict(appearanceDict, bufferNew, newTransform);\n    bufferNew.push(\" stream\\n\");\n    bufferNew.push(appearance);\n    bufferNew.push(\"\\nendstream\\nendobj\\n\");\n\n    return [\n      // data for the original object\n      // V field changed + reference for new AP\n      { ref: this.ref, data: bufferOriginal.join(\"\") },\n      // data for the new AP\n      { ref: newRef, data: bufferNew.join(\"\") },\n    ];\n  }\n\n  async _getAppearance(evaluator, task, annotationStorage) {\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n    if (!annotationStorage || isPassword) {\n      return null;\n    }\n    const value = annotationStorage[this.data.id];\n    if (value === \"\") {\n      return \"\";\n    }\n\n    const defaultPadding = 2;\n    const hPadding = defaultPadding;\n    const totalHeight = this.data.rect[3] - this.data.rect[1];\n    const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n    const fontInfo = await this._getFontData(evaluator, task);\n    const [font, fontName] = fontInfo;\n    let fontSize = fontInfo[2];\n\n    fontSize = this._computeFontSize(font, fontName, fontSize, totalHeight);\n\n    let descent = font.descent;\n    if (isNaN(descent)) {\n      descent = 0;\n    }\n\n    const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n    const defaultAppearance = this.data.defaultAppearance;\n    const alignment = this.data.textAlignment;\n\n    if (this.data.comb) {\n      return this._getCombAppearance(\n        defaultAppearance,\n        value,\n        totalWidth,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(\n        defaultAppearance,\n        value,\n        font,\n        fontSize,\n        totalWidth,\n        totalHeight,\n        alignment,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (alignment === 0 || alignment > 2) {\n      // Left alignment: nothing to do\n      return (\n        \"/Tx BMC q BT \" +\n        defaultAppearance +\n        ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(value)}) Tj` +\n        \" ET Q EMC\"\n      );\n    }\n\n    const renderedText = this._renderText(\n      value,\n      font,\n      fontSize,\n      totalWidth,\n      alignment,\n      hPadding,\n      vPadding\n    );\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  async _getFontData(evaluator, task) {\n    const operatorList = new OperatorList();\n    const initialState = {\n      fontSize: 0,\n      font: null,\n      fontName: null,\n      clone() {\n        return this;\n      },\n    };\n\n    await evaluator.getOperatorList({\n      stream: new StringStream(this.data.defaultAppearance),\n      task,\n      resources: this.fieldResources,\n      operatorList,\n      initialState,\n    });\n\n    return [initialState.font, initialState.fontName, initialState.fontSize];\n  }\n\n  _computeFontSize(font, fontName, fontSize, height) {\n    if (fontSize === null || fontSize === 0) {\n      const em = font.charsToGlyphs(\"M\", true)[0].width / 1000;\n      // According to https://en.wikipedia.org/wiki/Em_(typography)\n      // an average cap height should be 70% of 1em\n      const capHeight = 0.7 * em;\n      // 1.5 * capHeight * fontSize seems to be a good value for lineHeight\n      fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));\n\n      let fontRegex = new RegExp(`/${fontName}\\\\s+[0-9\\.]+\\\\s+Tf`);\n      if (this.data.defaultAppearance.search(fontRegex) === -1) {\n        // The font size is missing\n        fontRegex = new RegExp(`/${fontName}\\\\s+Tf`);\n      }\n      this.data.defaultAppearance = this.data.defaultAppearance.replace(\n        fontRegex,\n        `/${fontName} ${fontSize} Tf`\n      );\n    }\n    return fontSize;\n  }\n\n  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n    // We need to get the width of the text in order to align it correctly\n    const glyphs = font.charsToGlyphs(text);\n    const scale = fontSize / 1000;\n    let width = 0;\n    for (const glyph of glyphs) {\n      width += glyph.width * scale;\n    }\n\n    let shift;\n    if (alignment === 1) {\n      // Center\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      // Right\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n    shift = shift.toFixed(2);\n    vPadding = vPadding.toFixed(2);\n\n    return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this._hasText = true;\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    if (!isString(this.data.fieldValue)) {\n      this.data.fieldValue = \"\";\n    }\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  _getCombAppearance(defaultAppearance, text, width, hPadding, vPadding) {\n    const combWidth = (width / this.data.maxLen).toFixed(2);\n    const buf = [];\n    for (const character of text) {\n      buf.push(`(${escapeString(character)}) Tj`);\n    }\n\n    const renderedComb = buf.join(` ${combWidth} 0 Td `);\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _getMultilineAppearance(\n    defaultAppearance,\n    text,\n    font,\n    fontSize,\n    width,\n    height,\n    alignment,\n    hPadding,\n    vPadding\n  ) {\n    const lines = text.split(/\\r\\n|\\r|\\n/);\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n    for (const line of lines) {\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n      for (const chunk of chunks) {\n        const padding = buf.length === 0 ? hPadding : 0;\n        buf.push(\n          this._renderText(\n            chunk,\n            font,\n            fontSize,\n            width,\n            alignment,\n            padding,\n            -fontSize // <0 because a line is below the previous one\n          )\n        );\n      }\n    }\n\n    const renderedText = buf.join(\"\\n\");\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _splitLine(line, font, fontSize, width) {\n    if (line.length <= 1) {\n      // Nothing to split\n      return [line];\n    }\n\n    const scale = fontSize / 1000;\n    const whitespace = font.charsToGlyphs(\" \", true)[0].width * scale;\n    const chunks = [];\n\n    let lastSpacePos = -1,\n      startChunk = 0,\n      currentWidth = 0;\n\n    for (let i = 0, ii = line.length; i < ii; i++) {\n      const character = line.charAt(i);\n      if (character === \" \") {\n        if (currentWidth + whitespace > width) {\n          // We can break here\n          chunks.push(line.substring(startChunk, i));\n          startChunk = i;\n          currentWidth = whitespace;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += whitespace;\n          lastSpacePos = i;\n        }\n      } else {\n        const charWidth = font.charsToGlyphs(character, false)[0].width * scale;\n        if (currentWidth + charWidth > width) {\n          // We must break to the last white position (if available)\n          if (lastSpacePos !== -1) {\n            chunks.push(line.substring(startChunk, lastSpacePos + 1));\n            startChunk = i = lastSpacePos + 1;\n            lastSpacePos = -1;\n            currentWidth = 0;\n          } else {\n            // Just break in the middle of the word\n            chunks.push(line.substring(startChunk, i));\n            startChunk = i;\n            currentWidth = charWidth;\n          }\n        } else {\n          currentWidth += charWidth;\n        }\n      }\n    }\n\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n\n    return chunks;\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  getOperatorList(evaluator, task, renderForms, annotationStorage) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        false, // we use normalAppearance to render the button\n        annotationStorage\n      );\n    }\n\n    if (annotationStorage) {\n      const value = annotationStorage[this.data.id] || false;\n      let appearance;\n      if (value) {\n        appearance = this.checkedAppearance;\n      } else {\n        appearance = this.uncheckedAppearance;\n      }\n\n      if (appearance) {\n        const savedAppearance = this.appearance;\n        this.appearance = appearance;\n        const operatorList = super.getOperatorList(\n          evaluator,\n          task,\n          renderForms,\n          annotationStorage\n        );\n        this.appearance = savedAppearance;\n        return operatorList;\n      }\n\n      // No appearance\n      return Promise.resolve(new OperatorList());\n    }\n    return super.getOperatorList(\n      evaluator,\n      task,\n      renderForms,\n      annotationStorage\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.checkBox) {\n      return this._saveCheckbox(evaluator, task, annotationStorage);\n    }\n\n    if (this.data.radioButton) {\n      return this._saveRadioButton(evaluator, task, annotationStorage);\n    }\n\n    return super.save(evaluator, task, annotationStorage);\n  }\n\n  async _saveCheckbox(evaluator, task, annotationStorage) {\n    const defaultValue = this.data.fieldValue && this.data.fieldValue !== \"Off\";\n    const value = annotationStorage[this.data.id];\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const name = Name.get(value ? this.data.exportValue : \"Off\");\n    dict.set(\"V\", name);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    return [{ ref: this.ref, data: buffer.join(\"\") }];\n  }\n\n  async _saveRadioButton(evaluator, task, annotationStorage) {\n    const defaultValue = this.data.fieldValue === this.data.buttonValue;\n    const value = annotationStorage[this.data.id];\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const name = Name.get(value ? this.data.buttonValue : \"Off\");\n    let parentBuffer = null;\n    const encrypt = evaluator.xref.encrypt;\n\n    if (value) {\n      if (isRef(this.parent)) {\n        const parent = evaluator.xref.fetch(this.parent);\n        let parentTransform = null;\n        if (encrypt) {\n          parentTransform = encrypt.createCipherTransform(\n            this.parent.num,\n            this.parent.gen\n          );\n        }\n        parent.set(\"V\", name);\n        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n        writeDict(parent, parentBuffer, parentTransform);\n        parentBuffer.push(\"\\nendobj\\n\");\n      } else if (isDict(this.parent)) {\n        this.parent.set(\"V\", name);\n      }\n    }\n\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    const newRefs = [{ ref: this.ref, data: buffer.join(\"\") }];\n    if (parentBuffer !== null) {\n      newRefs.push({ ref: this.parent, data: parentBuffer.join(\"\") });\n    }\n\n    return newRefs;\n  }\n\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const normalAppearance = customAppearance.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n\n    const exportValues = normalAppearance.getKeys();\n    if (!exportValues.includes(\"Off\")) {\n      // The /Off appearance is optional.\n      exportValues.push(\"Off\");\n    }\n    if (exportValues.length !== 2) {\n      return;\n    }\n\n    this.data.exportValue =\n      exportValues[0] === \"Off\" ? exportValues[1] : exportValues[0];\n\n    this.checkedAppearance = normalAppearance.get(this.data.exportValue);\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (isDict(fieldParent) && fieldParent.has(\"V\")) {\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (isName(fieldParentValue)) {\n        this.parent = params.dict.getRaw(\"Parent\");\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    const normalAppearance = appearanceStates.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = key;\n        break;\n      }\n    }\n\n    this.checkedAppearance = normalAppearance.get(this.data.buttonValue);\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has(\"A\")) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\n          ),\n          displayValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // The field value can be `null` if no item is selected, a string if one\n    // item is selected or an array of strings if multiple items are selected.\n    // For consistency in the API and convenience in the display layer, we\n    // always make the field value an array with zero, one or multiple items.\n    if (isString(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    } else if (!this.data.fieldValue) {\n      this.data.fieldValue = [];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.data.title = stringToPDFString(parentItem.get(\"T\") || \"\");\n    this.data.contents = stringToPDFString(parentItem.get(\"Contents\") || \"\");\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    this.data.lineCoordinates = Util.normalizeRect(\n      parameters.dict.getArray(\"L\")\n    );\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    this.data.vertices = [];\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n\n    const xref = parameters.xref;\n    const originalInkLists = parameters.dict.getArray(\"InkList\");\n    this.data.inkLists = [];\n    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1]),\n        });\n      }\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = getQuadPoints(parameters.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  MarkupAnnotation,\n  getQuadPoints,\n};\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 { assert, ImageKind, OPS, warn } from \"../shared/util.js\";\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = state[item] || (state[item] = []);\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn,\n      iterateFn,\n      processFn,\n    };\n  }\n\n  function handlePaintSolidColorImageMask(\n    iFirstSave,\n    count,\n    fnArray,\n    argsArray\n  ) {\n    // Handles special case of mainly LaTeX documents which use image masks to\n    // draw lines with the current fill style.\n    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n    // have been found at iFirstSave.\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (\n        imageMask &&\n        imageMask.width === 1 &&\n        imageMask.height === 1 &&\n        (!imageMask.data.length ||\n          (imageMask.data.length === 1 && imageMask.data[0] === 0))\n      ) {\n        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n\n  var InitialState = [];\n\n  // This replaces (save, transform, paintInlineImageXObject, restore)+\n  // sequences with one |paintInlineImageXObjectGroup| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n    null,\n    function iterateInlineImageGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintInlineImageXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n    },\n    function foundInlineImageGroup(context, i) {\n      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n      var MAX_WIDTH = 1000;\n      var IMAGE_PADDING = 1;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIIXO = curr - 1;\n\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // assuming that heights of those image is too small (~1 pixel)\n      // packing as much as possible by lines\n      var maxX = 0;\n      var map = [],\n        maxLineHeight = 0;\n      var currentX = IMAGE_PADDING,\n        currentY = IMAGE_PADDING;\n      var q;\n      for (q = 0; q < count; q++) {\n        var transform = argsArray[iFirstTransform + (q << 2)];\n        var img = argsArray[iFirstPIIXO + (q << 2)][0];\n        if (currentX + img.width > MAX_WIDTH) {\n          // starting new line\n          maxX = Math.max(maxX, currentX);\n          currentY += maxLineHeight + 2 * IMAGE_PADDING;\n          currentX = 0;\n          maxLineHeight = 0;\n        }\n        map.push({\n          transform,\n          x: currentX,\n          y: currentY,\n          w: img.width,\n          h: img.height,\n        });\n        currentX += img.width + 2 * IMAGE_PADDING;\n        maxLineHeight = Math.max(maxLineHeight, img.height);\n      }\n      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n      var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n      var imgRowSize = imgWidth << 2;\n      for (q = 0; q < count; q++) {\n        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n        // Copy image by lines and extends pixels into padding.\n        var rowSize = map[q].w << 2;\n        var dataOffset = 0;\n        var offset = (map[q].x + map[q].y * imgWidth) << 2;\n        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n        for (var k = 0, kk = map[q].h; k < kk; k++) {\n          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n          dataOffset += rowSize;\n          offset += imgRowSize;\n        }\n        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n        while (offset >= 0) {\n          data[offset - 4] = data[offset];\n          data[offset - 3] = data[offset + 1];\n          data[offset - 2] = data[offset + 2];\n          data[offset - 1] = data[offset + 3];\n          data[offset + rowSize] = data[offset + rowSize - 4];\n          data[offset + rowSize + 1] = data[offset + rowSize - 3];\n          data[offset + rowSize + 2] = data[offset + rowSize - 2];\n          data[offset + rowSize + 3] = data[offset + rowSize - 1];\n          offset -= imgRowSize;\n        }\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [\n        {\n          width: imgWidth,\n          height: imgHeight,\n          kind: ImageKind.RGBA_32BPP,\n          data: imgData,\n        },\n        map,\n      ]);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageMaskXObject, restore)+\n  // sequences with one |paintImageMaskXObjectGroup| or one\n  // |paintImageMaskXObjectRepeat| operation.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n    null,\n    function iterateImageMaskGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintImageMaskXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n    },\n    function foundImageMaskGroup(context, i) {\n      var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n      var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIMXO = curr - 1;\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.floor((i - iFirstSave) / 4);\n      count = handlePaintSolidColorImageMask(\n        iFirstSave,\n        count,\n        fnArray,\n        argsArray\n      );\n      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      var q;\n      var isSameImage = false;\n      var iTransform, transformArgs;\n      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n      const firstTransformArg0 = argsArray[iFirstTransform][0],\n        firstTransformArg1 = argsArray[iFirstTransform][1],\n        firstTransformArg2 = argsArray[iFirstTransform][2],\n        firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      if (firstTransformArg1 === firstTransformArg2) {\n        isSameImage = true;\n        iTransform = iFirstTransform + 4;\n        var iPIMXO = iFirstPIMXO + 4;\n        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n          transformArgs = argsArray[iTransform];\n          if (\n            argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n            transformArgs[0] !== firstTransformArg0 ||\n            transformArgs[1] !== firstTransformArg1 ||\n            transformArgs[2] !== firstTransformArg2 ||\n            transformArgs[3] !== firstTransformArg3\n          ) {\n            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n              isSameImage = false;\n            } else {\n              count = q;\n            }\n            break; // different image or transform\n          }\n        }\n      }\n\n      if (isSameImage) {\n        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n        var positions = new Float32Array(count * 2);\n        iTransform = iFirstTransform;\n        for (q = 0; q < count; q++, iTransform += 4) {\n          transformArgs = argsArray[iTransform];\n          positions[q << 1] = transformArgs[4];\n          positions[(q << 1) + 1] = transformArgs[5];\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n        argsArray.splice(iFirstSave, count * 4, [\n          firstPIMXOArg0,\n          firstTransformArg0,\n          firstTransformArg1,\n          firstTransformArg2,\n          firstTransformArg3,\n          positions,\n        ]);\n      } else {\n        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n        var images = [];\n        for (q = 0; q < count; q++) {\n          transformArgs = argsArray[iFirstTransform + (q << 2)];\n          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n          images.push({\n            data: maskParams.data,\n            width: maskParams.width,\n            height: maskParams.height,\n            transform: transformArgs,\n          });\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n        argsArray.splice(iFirstSave, count * 4, [images]);\n      }\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (save, transform, paintImageXObject, restore)+ sequences\n  // with one paintImageXObjectRepeat operation, if the |transform| and\n  // |paintImageXObjectRepeat| ops are appropriate.\n  addState(\n    InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n    function (context) {\n      var argsArray = context.argsArray;\n      var iFirstTransform = context.iCurr - 2;\n      return (\n        argsArray[iFirstTransform][1] === 0 &&\n        argsArray[iFirstTransform][2] === 0\n      );\n    },\n    function iterateImageGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          if (fnArray[i] !== OPS.transform) {\n            return false;\n          }\n          var iFirstTransform = context.iCurr - 2;\n          var firstTransformArg0 = argsArray[iFirstTransform][0];\n          var firstTransformArg3 = argsArray[iFirstTransform][3];\n          if (\n            argsArray[i][0] !== firstTransformArg0 ||\n            argsArray[i][1] !== 0 ||\n            argsArray[i][2] !== 0 ||\n            argsArray[i][3] !== firstTransformArg3\n          ) {\n            return false; // transforms don't match\n          }\n          return true;\n        case 2:\n          if (fnArray[i] !== OPS.paintImageXObject) {\n            return false;\n          }\n          var iFirstPIXO = context.iCurr - 1;\n          var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n          if (argsArray[i][0] !== firstPIXOArg0) {\n            return false; // images don't match\n          }\n          return true;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n      throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_IMAGES_IN_BLOCK = 3;\n      var MAX_IMAGES_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIXO = curr - 1;\n      var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.min(\n        Math.floor((i - iFirstSave) / 4),\n        MAX_IMAGES_IN_BLOCK\n      );\n      if (count < MIN_IMAGES_IN_BLOCK) {\n        return i - ((i - iFirstSave) % 4);\n      }\n\n      // Extract the (x,y) positions from all of the matching transforms.\n      var positions = new Float32Array(count * 2);\n      var iTransform = iFirstTransform;\n      for (var q = 0; q < count; q++, iTransform += 4) {\n        var transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      var args = [\n        firstPIXOArg0,\n        firstTransformArg0,\n        firstTransformArg3,\n        positions,\n      ];\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, args);\n\n      return iFirstSave + 1;\n    }\n  );\n\n  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n  // sequences, if the font for each one is the same.\n  addState(\n    InitialState,\n    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n    null,\n    function iterateShowTextGroup(context, i) {\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 4;\n      var pos = (i - iFirstSave) % 5;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.beginText;\n        case 1:\n          return fnArray[i] === OPS.setFont;\n        case 2:\n          return fnArray[i] === OPS.setTextMatrix;\n        case 3:\n          if (fnArray[i] !== OPS.showText) {\n            return false;\n          }\n          var iFirstSetFont = context.iCurr - 3;\n          var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n          var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n          if (\n            argsArray[i][0] !== firstSetFontArg0 ||\n            argsArray[i][1] !== firstSetFontArg1\n          ) {\n            return false; // fonts don't match\n          }\n          return true;\n        case 4:\n          return fnArray[i] === OPS.endText;\n      }\n      throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n    },\n    function (context, i) {\n      var MIN_CHARS_IN_BLOCK = 3;\n      var MAX_CHARS_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstBeginText = curr - 4;\n      var iFirstSetFont = curr - 3;\n      var iFirstSetTextMatrix = curr - 2;\n      var iFirstShowText = curr - 1;\n      var iFirstEndText = curr;\n      var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      // At this point, i is the index of the first op past the last valid\n      // quintet.\n      var count = Math.min(\n        Math.floor((i - iFirstBeginText) / 5),\n        MAX_CHARS_IN_BLOCK\n      );\n      if (count < MIN_CHARS_IN_BLOCK) {\n        return i - ((i - iFirstBeginText) % 5);\n      }\n\n      // If the preceding quintet is (<something>, setFont, setTextMatrix,\n      // showText, endText), include that as well. (E.g. <something> might be\n      // |dependency|.)\n      var iFirst = iFirstBeginText;\n      if (\n        iFirstBeginText >= 4 &&\n        fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n        fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n        fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n        fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n        argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n        argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n      ) {\n        count++;\n        iFirst -= 5;\n      }\n\n      // Remove (endText, beginText, setFont) trios.\n      var iEndText = iFirst + 4;\n      for (var q = 1; q < count; q++) {\n        fnArray.splice(iEndText, 3);\n        argsArray.splice(iEndText, 3);\n        iEndText += 2;\n      }\n\n      return iEndText + 1;\n    }\n  );\n\n  // eslint-disable-next-line no-shadow\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  QueueOptimizer.prototype = {\n    _optimize() {\n      // Process new fnArray item(s) chunk.\n      const fnArray = this.queue.fnArray;\n      let i = this.lastProcessed,\n        ii = fnArray.length;\n      let state = this.state;\n      let match = this.match;\n      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n        // Micro-optimization for the common case: last item is not\n        // optimizable, just skipping it.\n        this.lastProcessed = ii;\n        return;\n      }\n\n      const context = this.context;\n      while (i < ii) {\n        if (match) {\n          // Already find a block of potentially optimizable items, iterating...\n          const iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          // Found last items for the block, processing...\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        // Find the potentially optimizable items.\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        // Found a start of the block based on addState rules.\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          // Check failed, continue search...\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n\n    flush() {\n      while (this.match) {\n        const length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        // Repeat optimization until all chunks are exhausted.\n        this._optimize();\n      }\n    },\n\n    reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    },\n  };\n  return QueueOptimizer;\n})();\n\nvar NullOptimizer = (function NullOptimizerClosure() {\n  // eslint-disable-next-line no-shadow\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n\n  NullOptimizer.prototype = {\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n\n    flush() {},\n\n    reset() {},\n  };\n\n  return NullOptimizer;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n  // eslint-disable-next-line no-shadow\n  function OperatorList(intent, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && intent !== \"oplist\") {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  OperatorList.prototype = {\n    get length() {\n      return this.argsArray.length;\n    },\n\n    get ready() {\n      return this._resolved || this._streamSink.ready;\n    },\n\n    /**\n     * @type {number} The total length of the entire operator list, since\n     *                `this.length === 0` after flushing.\n     */\n    get totalLength() {\n      return this._totalLength + this.length;\n    },\n\n    addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this._streamSink) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (\n          this.weight >= CHUNK_SIZE_ABOUT &&\n          (fn === OPS.restore || fn === OPS.endText)\n        ) {\n          // heuristic to flush on boundary of restore or endText\n          this.flush();\n        }\n      }\n    },\n\n    addDependency(dependency) {\n      if (this.dependencies.has(dependency)) {\n        return;\n      }\n      this.dependencies.add(dependency);\n      this.addOp(OPS.dependency, [dependency]);\n    },\n\n    addDependencies(dependencies) {\n      for (const dependency of dependencies) {\n        this.addDependency(dependency);\n      }\n    },\n\n    addOpList(opList) {\n      if (!(opList instanceof OperatorList)) {\n        warn('addOpList - ignoring invalid \"opList\" parameter.');\n        return;\n      }\n      for (const dependency of opList.dependencies) {\n        this.dependencies.add(dependency);\n      }\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n\n    getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length,\n      };\n    },\n\n    get _transfers() {\n      const transfers = [];\n      const { fnArray, argsArray, length } = this;\n      for (let i = 0; i < length; i++) {\n        switch (fnArray[i]) {\n          case OPS.paintInlineImageXObject:\n          case OPS.paintInlineImageXObjectGroup:\n          case OPS.paintImageMaskXObject:\n            const arg = argsArray[i][0]; // first param in imgData\n\n            if (\n              typeof PDFJSDev === \"undefined\" ||\n              PDFJSDev.test(\"!PRODUCTION || TESTING\")\n            ) {\n              assert(\n                arg.data instanceof Uint8ClampedArray,\n                'OperatorList._transfers: Unsupported \"arg.data\" type.'\n              );\n            }\n            if (!arg.cached) {\n              transfers.push(arg.data.buffer);\n            }\n            break;\n        }\n      }\n      return transfers;\n    },\n\n    flush(lastChunk = false) {\n      this.optimizer.flush();\n      const length = this.length;\n      this._totalLength += length;\n\n      this._streamSink.enqueue(\n        {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk,\n          length,\n        },\n        1,\n        this._transfers\n      );\n\n      this.dependencies.clear();\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    },\n  };\n\n  return OperatorList;\n})();\n\nexport { OperatorList };\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/* eslint no-var: error */\n\nimport { bytesToString, escapeString } from \"../shared/util.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${key} `);\n    writeValue(dict.getRaw(key), buffer, transform);\n  }\n  buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n  writeDict(stream.dict, buffer, transform);\n  buffer.push(\" stream\\n\");\n  let string = bytesToString(stream.getBytes());\n  if (transform !== null) {\n    string = transform.encryptString(string);\n  }\n  buffer.push(string);\n  buffer.push(\"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n    writeValue(val, buffer, transform);\n  }\n  buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n  if (isName(value)) {\n    buffer.push(`/${value.name}`);\n  } else if (isRef(value)) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value)) {\n    writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform !== null) {\n      value = transform.encryptString(value);\n    }\n    buffer.push(`(${escapeString(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (isDict(value)) {\n    writeDict(value, buffer, transform);\n  } else if (isStream(value)) {\n    writeStream(value, buffer, transform);\n  }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n  return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return bytesToString(calculateMD5(array));\n}\n\nfunction incrementalUpdate(originalData, xrefInfo, newRefs) {\n  const newXref = new Dict(null);\n  const refForXrefTable = xrefInfo.newRef;\n\n  let buffer, baseOffset;\n  const lastByte = originalData[originalData.length - 1];\n  if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n    buffer = [];\n    baseOffset = originalData.length;\n  } else {\n    // Avoid to concatenate %%EOF with an object definition\n    buffer = [\"\\n\"];\n    baseOffset = originalData.length + 1;\n  }\n\n  newXref.set(\"Size\", refForXrefTable.num + 1);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  newXref.set(\"Type\", Name.get(\"XRef\"));\n\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n  if (xrefInfo.encrypt !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encrypt);\n  }\n\n  // Add a ref for the new xref and sort them\n  newRefs.push({ ref: refForXrefTable, data: \"\" });\n  newRefs = newRefs.sort((a, b) => {\n    // compare the refs\n    return a.ref.num - b.ref.num;\n  });\n\n  const xrefTableData = [[0, 1, 0xffff]];\n  const indexes = [0, 1];\n  let maxOffset = 0;\n  for (const { ref, data } of newRefs) {\n    maxOffset = Math.max(maxOffset, baseOffset);\n    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n    baseOffset += data.length;\n    indexes.push(ref.num);\n    indexes.push(1);\n    buffer.push(data);\n  }\n\n  newXref.set(\"Index\", indexes);\n\n  if (xrefInfo.fileIds.length !== 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n\n  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n  const sizes = [1, offsetSize, 2];\n  const structSize = sizes[0] + sizes[1] + sizes[2];\n  const tableLength = structSize * xrefTableData.length;\n  newXref.set(\"W\", sizes);\n  newXref.set(\"Length\", tableLength);\n\n  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n  writeDict(newXref, buffer, null);\n  buffer.push(\" stream\\n\");\n\n  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n  const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n  const array = new Uint8Array(\n    originalData.length + bufferLen + tableLength + footer.length\n  );\n\n  // Original data\n  array.set(originalData);\n  let offset = originalData.length;\n\n  // New data\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  // New xref table\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, array);\n    offset = writeInt(objOffset, sizes[1], offset, array);\n    offset = writeInt(gen, sizes[2], offset, array);\n  }\n\n  // Add the footer\n  writeString(footer, offset, array);\n\n  return array;\n}\n\nexport { writeDict, incrementalUpdate };\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  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n  RefSet,\n} from \"./primitives.js\";\nimport {\n  ErrorFont,\n  Font,\n  FontFlags,\n  getFontType,\n  IdentityToUnicodeMap,\n  ToUnicodeMap,\n} from \"./fonts.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport { getLookupTableFactory, MissingDataException } from \"./core_utils.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport {\n  getSerifFonts,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  LocalColorSpaceCache,\n  LocalGStateCache,\n  LocalImageCache,\n} from \"./image_utils.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  fontExtraProperties: false,\n});\n\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2,\n};\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n    for (let i = 0, ii = value.length; i < ii; i++) {\n      const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n    warn(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n\n  if (!isName(value)) {\n    if (parsingArray) {\n      return null;\n    }\n    return \"source-over\";\n  }\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n    case \"Multiply\":\n      return \"multiply\";\n    case \"Screen\":\n      return \"screen\";\n    case \"Overlay\":\n      return \"overlay\";\n    case \"Darken\":\n      return \"darken\";\n    case \"Lighten\":\n      return \"lighten\";\n    case \"ColorDodge\":\n      return \"color-dodge\";\n    case \"ColorBurn\":\n      return \"color-burn\";\n    case \"HardLight\":\n      return \"hard-light\";\n    case \"SoftLight\":\n      return \"soft-light\";\n    case \"Difference\":\n      return \"difference\";\n    case \"Exclusion\":\n      return \"exclusion\";\n    case \"Hue\":\n      return \"hue\";\n    case \"Saturation\":\n      return \"saturation\";\n    case \"Color\":\n      return \"color\";\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n  if (parsingArray) {\n    return null;\n  }\n  warn(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n  static get TIME_SLOT_DURATION_MS() {\n    return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n  }\n\n  static get CHECK_TIME_EVERY() {\n    return shadow(this, \"CHECK_TIME_EVERY\", 100);\n  }\n\n  constructor() {\n    this.reset();\n  }\n\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n}\n\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    globalImageCache,\n    options = null,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.parsingType3Font = false;\n\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n  }\n\n  /**\n   * Since Functions are only cached (locally) by reference, we can share one\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n   */\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported,\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n\n  clone(newOptions = DefaultPartialEvaluatorOptions) {\n    var newEvaluator = Object.create(this);\n    newEvaluator.options = newOptions;\n    return newEvaluator;\n  }\n\n  hasBlendModes(resources) {\n    if (!(resources instanceof Dict)) {\n      return false;\n    }\n\n    const processed = new RefSet();\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n\n    var nodes = [resources],\n      xref = this.xref;\n    while (nodes.length) {\n      var node = nodes.shift();\n      // First check the current resources for blend modes.\n      var graphicStates = node.get(\"ExtGState\");\n      if (graphicStates instanceof Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof Ref) {\n            if (processed.has(graphicState)) {\n              continue; // The ExtGState has already been processed.\n            }\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              if (ex instanceof MissingDataException) {\n                throw ex;\n              }\n              // Avoid parsing a corrupt ExtGState more than once.\n              processed.put(graphicState);\n\n              info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n          if (!(graphicState instanceof Dict)) {\n            continue;\n          }\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n\n          const bm = graphicState.get(\"BM\");\n          if (bm instanceof Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n            continue;\n          }\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      // Descend into the XObjects to look for more resources and blend modes.\n      var xObjects = node.get(\"XObject\");\n      if (!(xObjects instanceof Dict)) {\n        continue;\n      }\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof Ref) {\n          if (processed.has(xObject)) {\n            // The XObject has already been processed, and by avoiding a\n            // redundant `xref.fetch` we can *significantly* reduce the load\n            // time for badly generated PDF files (fixes issue6961.pdf).\n            continue;\n          }\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            if (ex instanceof MissingDataException) {\n              throw ex;\n            }\n            // Avoid parsing a corrupt XObject more than once.\n            processed.put(xObject);\n\n            info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n        if (!isStream(xObject)) {\n          continue;\n        }\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n        var xResources = xObject.dict.get(\"Resources\");\n        if (!(xResources instanceof Dict)) {\n          continue;\n        }\n        // Checking objId to detect an infinite loop.\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n\n        nodes.push(xResources);\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n    return false;\n  }\n\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n    if (cachedData) {\n      return cachedData;\n    }\n    const readableStream = this.handler.sendWithStream(\"FetchBuiltInCMap\", {\n      name,\n    });\n    const reader = readableStream.getReader();\n\n    const data = await new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            return;\n          }\n          resolve(value);\n          pump();\n        }, reject);\n      }\n      pump();\n    });\n\n    if (data.compressionType !== CMapCompressionType.NONE) {\n      // Given the size of uncompressed CMaps, only cache compressed ones.\n      this.builtInCMapCache.set(name, data);\n    }\n    return data;\n  }\n\n  async buildFormXObject(\n    resources,\n    xobj,\n    smask,\n    operatorList,\n    task,\n    initialState,\n    localColorSpaceCache\n  ) {\n    var dict = xobj.dict;\n    var matrix = dict.getArray(\"Matrix\");\n    var bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      bbox = Util.normalizeRect(bbox);\n    } else {\n      bbox = null;\n    }\n    let optionalContent = null;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    var group = dict.get(\"Group\");\n    if (group) {\n      var groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false,\n      };\n\n      var groupSubtype = group.get(\"S\");\n      var colorSpace = null;\n      if (isName(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n\n          const cachedColorSpace = ColorSpace.getCached(\n            cs,\n            this.xref,\n            localColorSpaceCache\n          );\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache,\n            });\n          }\n        }\n      }\n\n      if (smask && smask.backdrop) {\n        colorSpace = colorSpace || ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\n    }\n\n    operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n    return this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState,\n    }).then(function () {\n      operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n      if (group) {\n        operatorList.addOp(OPS.endGroup, [groupOptions]);\n      }\n\n      if (optionalContent) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n    });\n  }\n\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.data.buffer] : null;\n\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\n        \"commonobj\",\n        [objId, \"Image\", imgData],\n        transfers\n      );\n    }\n    return this.handler.send(\n      \"obj\",\n      [objId, this.pageIndex, \"Image\", imgData],\n      transfers\n    );\n  }\n\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache,\n  }) {\n    var dict = image.dict;\n    const imageRef = dict.objId;\n    var w = dict.get(\"Width\", \"W\");\n    var h = dict.get(\"Height\", \"H\");\n\n    if (!(w && isNum(w)) || !(h && isNum(h))) {\n      warn(\"Image dimensions are missing, or not numbers.\");\n      return undefined;\n    }\n    var maxImageSize = this.options.maxImageSize;\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      warn(\"Image exceeded maximum allowed size and was removed.\");\n      return undefined;\n    }\n\n    var imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    var imgData, args;\n    if (imageMask) {\n      // This depends on a tmpCanvas being filled with the\n      // current fillStyle, such that processing the pixel\n      // data can't be done here. Instead of creating a\n      // complete PDFImage, only read the information needed\n      // for later.\n\n      var width = dict.get(\"Width\", \"W\");\n      var height = dict.get(\"Height\", \"H\");\n      var bitStrideLength = (width + 7) >> 3;\n      var imgArray = image.getBytes(\n        bitStrideLength * height,\n        /* forceClamped = */ true\n      );\n      var decode = dict.getArray(\"Decode\", \"D\");\n\n      imgData = PDFImage.createMask({\n        imgArray,\n        width,\n        height,\n        imageIsFromDecodeStream: image instanceof DecodeStream,\n        inverseDecode: !!decode && decode[0] > 0,\n      });\n      imgData.cached = !!cacheKey;\n      args = [imgData];\n\n      operatorList.addOp(OPS.paintImageMaskXObject, args);\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: OPS.paintImageMaskXObject,\n          args,\n        });\n      }\n      return undefined;\n    }\n\n    var softMask = dict.get(\"SMask\", \"SM\") || false;\n    var mask = dict.get(\"Mask\") || false;\n\n    var SMALL_IMAGE_DIMENSIONS = 200;\n    // Inlining small images into the queue as RGB data\n    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n      const imageObj = new PDFImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this._pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      // We force the use of RGBA_32BPP images here, because we can't handle\n      // any other kind.\n      imgData = imageObj.createImageData(/* forceRGBA = */ true);\n      operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n      return undefined;\n    }\n\n    // If there is no imageMask, create the PDFImage and a lot\n    // of image processing can be done here.\n    let objId = `img_${this.idFactory.createObjId()}`,\n      cacheGlobally = false;\n\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(\n        imageRef,\n        this.pageIndex\n      );\n\n      if (cacheGlobally) {\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n\n    // Ensure that the dependency is added before the image is decoded.\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n\n    PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    })\n      .then(imageObj => {\n        imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n        return this._sendImgData(objId, imgData, cacheGlobally);\n      })\n      .catch(reason => {\n        warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n        return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n      });\n\n    operatorList.addOp(OPS.paintImageXObject, args);\n    if (cacheKey) {\n      localImageCache.set(cacheKey, imageRef, {\n        fn: OPS.paintImageXObject,\n        args,\n      });\n\n      if (imageRef) {\n        assert(!isInline, \"Cannot cache an inline image globally.\");\n        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n          });\n        }\n      }\n    }\n    return undefined;\n  }\n\n  handleSMask(\n    smask,\n    resources,\n    operatorList,\n    task,\n    stateManager,\n    localColorSpaceCache\n  ) {\n    var smaskContent = smask.get(\"G\");\n    var smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\"),\n    };\n\n    // The SMask might have a alpha/luminosity value transfer function --\n    // we will build a map of integer values in range 0..255 to be fast.\n    var transferObj = smask.get(\"TR\");\n    if (isPDFFunction(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      var transferMap = new Uint8Array(256);\n      var tmp = new Float32Array(1);\n      for (var i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = (tmp[0] * 255) | 0;\n      }\n      smaskOptions.transferMap = transferMap;\n    }\n\n    return this.buildFormXObject(\n      resources,\n      smaskContent,\n      smaskOptions,\n      operatorList,\n      task,\n      stateManager.state.clone(),\n      localColorSpaceCache\n    );\n  }\n\n  handleTransferFunction(tr) {\n    let transferArray;\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if (isPDFFunction(tr)) {\n      transferArray = [tr];\n    } else {\n      return null; // Not a valid transfer function entry.\n    }\n\n    const transferMaps = [];\n    let numFns = 0,\n      numEffectfulFns = 0;\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n\n      if (isName(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!isPDFFunction(transferObj)) {\n        return null; // Not a valid transfer function object.\n      }\n\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256),\n        tmp = new Float32Array(1);\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = (tmp[0] * 255) | 0;\n      }\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n\n    if (!(numFns === 1 || numFns === 4)) {\n      return null; // Only 1 or 4 functions are supported, by the specification.\n    }\n    if (numEffectfulFns === 0) {\n      return null; // Only /Identity transfer functions found, which are no-ops.\n    }\n    return transferMaps;\n  }\n\n  handleTilingType(\n    fn,\n    args,\n    resources,\n    pattern,\n    patternDict,\n    operatorList,\n    task\n  ) {\n    // Create an IR of the pattern code.\n    const tilingOpList = new OperatorList();\n    // Merge the available resources, to prevent issues when the patternDict\n    // is missing some /Resources entries (fixes issue6541.pdf).\n    const patternResources = Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources],\n    });\n\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList,\n    })\n      .then(function () {\n        return getTilingPatternIR(\n          {\n            fnArray: tilingOpList.fnArray,\n            argsArray: tilingOpList.argsArray,\n          },\n          patternDict,\n          args\n        );\n      })\n      .then(\n        function (tilingPatternIR) {\n          // Add the dependencies to the parent operator list so they are\n          // resolved before the sub operator list is executed synchronously.\n          operatorList.addDependencies(tilingOpList.dependencies);\n          operatorList.addOp(fn, tilingPatternIR);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return;\n          }\n          if (this.options.ignoreErrors) {\n            // Error(s) in the TilingPattern -- sending unsupported feature\n            // notification and allow rendering to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n            });\n            warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n            return;\n          }\n          throw reason;\n        }\n      );\n  }\n\n  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {\n    // TODO(mack): Not needed?\n    var fontName,\n      fontSize = 0;\n    if (fontArgs) {\n      fontArgs = fontArgs.slice();\n      fontName = fontArgs[0].name;\n      fontSize = fontArgs[1];\n    }\n\n    return this.loadFont(fontName, fontRef, resources)\n      .then(translated => {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated\n          .loadType3Data(this, resources, task)\n          .then(function () {\n            // Add the dependencies to the parent operatorList so they are\n            // resolved before Type3 operatorLists are executed synchronously.\n            operatorList.addDependencies(translated.type3Dependencies);\n\n            return translated;\n          })\n          .catch(reason => {\n            // Error in the font data -- sending unsupported feature\n            // notification.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n            });\n            return new TranslatedFont({\n              loadedName: \"g_font_error\",\n              font: new ErrorFont(`Type3 font load error: ${reason}`),\n              dict: translated.font,\n              extraProperties: this.options.fontExtraProperties,\n            });\n          });\n      })\n      .then(translated => {\n        state.font = translated.font;\n        state.fontSize = fontSize;\n        state.fontName = fontName;\n        translated.send(this.handler);\n        return translated.loadedName;\n      });\n  }\n\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n\n    if (font.data) {\n      const isAddToPathSet = !!(\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n      );\n      if (\n        isAddToPathSet ||\n        state.fillColorSpace.name === \"Pattern\" ||\n        font.disableFontFace ||\n        this.options.disableFontFace\n      ) {\n        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);\n      }\n    }\n    return glyphs;\n  }\n\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n    const reason = new FormatError(\n      \"Missing setFont (Tf) operator before text rendering operator.\"\n    );\n\n    if (this.options.ignoreErrors) {\n      // Missing setFont operator before text rendering operator -- sending\n      // unsupported feature notification and allow rendering to continue.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontState,\n      });\n      warn(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache,\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    // This array holds the converted/processed state data.\n    var gStateObj = [];\n    var gStateKeys = gState.getKeys();\n    var promise = Promise.resolve();\n    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n      const key = gStateKeys[i];\n      const value = gState.get(key);\n      switch (key) {\n        case \"Type\":\n          break;\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n        case \"Font\":\n          isSimpleGState = false;\n\n          promise = promise.then(() => {\n            return this.handleSetFont(\n              resources,\n              null,\n              value[0],\n              operatorList,\n              task,\n              stateManager.state\n            ).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              gStateObj.push([key, [loadedName, value[1]]]);\n            });\n          });\n          break;\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n        case \"SMask\":\n          if (isName(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n          if (isDict(value)) {\n            isSimpleGState = false;\n\n            promise = promise.then(() => {\n              return this.handleSMask(\n                value,\n                resources,\n                operatorList,\n                task,\n                stateManager,\n                localColorSpaceCache\n              );\n            });\n            gStateObj.push([key, true]);\n          } else {\n            warn(\"Unsupported SMask type\");\n          }\n          break;\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n        // Only generate info log messages for the following since\n        // they are unlikely to have a big impact on the rendering.\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          // TODO implement these operators.\n          info(\"graphic state operator \" + key);\n          break;\n        default:\n          info(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n    return promise.then(function () {\n      if (gStateObj.length > 0) {\n        operatorList.addOp(OPS.setGState, [gStateObj]);\n      }\n\n      if (isSimpleGState) {\n        localGStateCache.set(cacheKey, gStateRef, gStateObj);\n      }\n    });\n  }\n\n  loadFont(fontName, font, resources) {\n    const errorFont = () => {\n      return Promise.resolve(\n        new TranslatedFont({\n          loadedName: \"g_font_error\",\n          font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n          dict: font,\n          extraProperties: this.options.fontExtraProperties,\n        })\n      );\n    };\n\n    var fontRef,\n      xref = this.xref;\n    if (font) {\n      // Loading by ref.\n      if (!isRef(font)) {\n        throw new FormatError('The \"font\" object should be a reference.');\n      }\n      fontRef = font;\n    } else {\n      // Loading by name.\n      var fontRes = resources.get(\"Font\");\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n    if (!fontRef) {\n      const partialMsg = `Font \"${\n        fontName || (font && font.toString())\n      }\" is not available`;\n\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        warn(`${partialMsg}.`);\n        return errorFont();\n      }\n      // Font not found -- sending unsupported feature notification.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n      });\n      warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n      // Falling back to a default font to avoid completely broken rendering,\n      // but note that there're no guarantees that things will look \"correct\".\n      fontRef = PartialEvaluator.fallbackFontDict;\n    }\n\n    if (this.fontCache.has(fontRef)) {\n      return this.fontCache.get(fontRef);\n    }\n\n    font = xref.fetchIfRef(fontRef);\n    if (!isDict(font)) {\n      return errorFont();\n    }\n\n    // We are holding `font.translated` references just for `fontRef`s that\n    // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n    if (font.translated) {\n      return font.translated;\n    }\n\n    var fontCapability = createPromiseCapability();\n\n    var preEvaluatedFont = this.preEvaluateFont(font);\n    const { descriptor, hash } = preEvaluatedFont;\n\n    var fontRefIsRef = isRef(fontRef),\n      fontID;\n    if (fontRefIsRef) {\n      fontID = `f${fontRef.toString()}`;\n    }\n\n    if (hash && isDict(descriptor)) {\n      if (!descriptor.fontAliases) {\n        descriptor.fontAliases = Object.create(null);\n      }\n      var fontAliases = descriptor.fontAliases;\n\n      if (fontAliases[hash]) {\n        var aliasFontRef = fontAliases[hash].aliasRef;\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId(),\n        };\n      }\n\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n      fontID = fontAliases[hash].fontID;\n    }\n\n    // Workaround for bad PDF generators that reference fonts incorrectly,\n    // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n    // In this case we should not put the font into `this.fontCache` (which is\n    // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n    //\n    // However, if we don't cache the font it's not possible to remove it\n    // when `cleanup` is triggered from the API, which causes issues on\n    // subsequent rendering operations (see issue7403.pdf).\n    // A simple workaround would be to just not hold `font.translated`\n    // references in this case, but this would force us to unnecessarily load\n    // the same fonts over and over.\n    //\n    // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n    // key in `this.fontCache`, to allow the font to be cached.\n    // NOTE: This works because `RefSetCache` calls `toString()` on provided\n    //       keys. Also, since `fontRef` is used when getting cached fonts,\n    //       we'll not accidentally match fonts cached with the `fontID`.\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, fontCapability.promise);\n    } else {\n      if (!fontID) {\n        fontID = this.idFactory.createFontId();\n      }\n      this.fontCache.put(`id_${fontID}`, fontCapability.promise);\n    }\n    assert(\n      fontID && fontID.startsWith(\"f\"),\n      'The \"fontID\" must be (correctly) defined.'\n    );\n\n    // Keep track of each font we translated so the caller can\n    // load them asynchronously before calling display on a page.\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n    font.translated = fontCapability.promise;\n\n    // TODO move promises into translate font\n    var translatedPromise;\n    try {\n      translatedPromise = this.translateFont(preEvaluatedFont);\n    } catch (e) {\n      translatedPromise = Promise.reject(e);\n    }\n\n    translatedPromise\n      .then(translatedFont => {\n        if (translatedFont.fontType !== undefined) {\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[translatedFont.fontType] = true;\n        }\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: translatedFont,\n            dict: font,\n            extraProperties: this.options.fontExtraProperties,\n          })\n        );\n      })\n      .catch(reason => {\n        // TODO fontCapability.reject?\n        // Error in the font data -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n        });\n\n        try {\n          // error, but it's still nice to have font type reported\n          var fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n          var subtype = fontFile3 && fontFile3.get(\"Subtype\");\n          var fontType = getFontType(\n            preEvaluatedFont.type,\n            subtype && subtype.name\n          );\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[fontType] = true;\n        } catch (ex) {}\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: new ErrorFont(\n              reason instanceof Error ? reason.message : reason\n            ),\n            dict: font,\n            extraProperties: this.options.fontExtraProperties,\n          })\n        );\n      });\n    return fontCapability.promise;\n  }\n\n  buildPath(operatorList, fn, args, parsingText = false) {\n    var lastIndex = operatorList.length - 1;\n    if (!args) {\n      args = [];\n    }\n    if (\n      lastIndex < 0 ||\n      operatorList.fnArray[lastIndex] !== OPS.constructPath\n    ) {\n      // Handle corrupt PDF documents that contains path operators inside of\n      // text objects, which may shift subsequent text, by enclosing the path\n      // operator in save/restore operators (fixes issue10542_reduced.pdf).\n      //\n      // Note that this will effectively disable the optimization in the\n      // `else` branch below, but given that this type of corruption is\n      // *extremely* rare that shouldn't really matter much in practice.\n      if (parsingText) {\n        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(OPS.save, null);\n      }\n\n      operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n      if (parsingText) {\n        operatorList.addOp(OPS.restore, null);\n      }\n    } else {\n      var opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      Array.prototype.push.apply(opArgs[1], args);\n    }\n  }\n\n  parseColorSpace({ cs, resources, localColorSpaceCache }) {\n    return ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the ColorSpace -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n        });\n        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n      throw reason;\n    });\n  }\n\n  async handleColorN(\n    operatorList,\n    fn,\n    args,\n    cs,\n    patterns,\n    resources,\n    task,\n    localColorSpaceCache\n  ) {\n    // compile tiling patterns\n    var patternName = args[args.length - 1];\n    // SCN/scn applies patterns along with normal colors\n    var pattern;\n    if (isName(patternName) && (pattern = patterns.get(patternName.name))) {\n      var dict = isStream(pattern) ? pattern.dict : pattern;\n      var typeNum = dict.get(\"PatternType\");\n\n      if (typeNum === PatternType.TILING) {\n        var color = cs.base ? cs.base.getRgb(args, 0) : null;\n        return this.handleTilingType(\n          fn,\n          color,\n          resources,\n          pattern,\n          dict,\n          operatorList,\n          task\n        );\n      } else if (typeNum === PatternType.SHADING) {\n        var shading = dict.get(\"Shading\");\n        var matrix = dict.getArray(\"Matrix\");\n        pattern = Pattern.parseShading(\n          shading,\n          matrix,\n          this.xref,\n          resources,\n          this.handler,\n          this._pdfFunctionFactory,\n          localColorSpaceCache\n        );\n        operatorList.addOp(fn, pattern.getIR());\n        return undefined;\n      }\n      throw new FormatError(`Unknown PatternType: ${typeNum}`);\n    }\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\n  }\n\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n    if (isName(contentProperties)) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (isDict(contentProperties)) {\n      optionalContent = contentProperties;\n    } else {\n      throw new FormatError(\"Optional content properties malformed.\");\n    }\n\n    const optionalContentType = optionalContent.get(\"Type\").name;\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId,\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n      if (\n        Array.isArray(optionalContentGroups) ||\n        isDict(optionalContentGroups)\n      ) {\n        const groupIds = [];\n        if (Array.isArray(optionalContentGroups)) {\n          optionalContent.get(\"OCGs\").forEach(ocg => {\n            groupIds.push(ocg.toString());\n          });\n        } else {\n          // Dictionary, just use the obj id.\n          groupIds.push(optionalContentGroups.objId);\n        }\n\n        let expression = null;\n        if (optionalContent.get(\"VE\")) {\n          // TODO support visibility expression.\n          expression = true;\n        }\n\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy: isName(optionalContent.get(\"P\"))\n            ? optionalContent.get(\"P\").name\n            : null,\n          expression,\n        };\n      } else if (isRef(optionalContentGroups)) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString(),\n        };\n      }\n    }\n    return null;\n  }\n\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n  }) {\n    // Ensure that `resources`/`initialState` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    initialState = initialState || new EvalState();\n\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n\n    var self = this;\n    var xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new LocalImageCache();\n    const localColorSpaceCache = new LocalColorSpaceCache();\n    const localGStateCache = new LocalGStateCache();\n\n    var xobjs = resources.get(\"XObject\") || Dict.empty;\n    var patterns = resources.get(\"Pattern\") || Dict.empty;\n    var stateManager = new StateManager(initialState);\n    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    var timeSlotManager = new TimeSlotManager();\n\n    function closePendingRestoreOPS(argument) {\n      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(OPS.restore, []);\n      }\n    }\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      var stop,\n        operation = {},\n        i,\n        ii,\n        cs,\n        name;\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are used beyond this loop, so we\n        // cannot reuse the same array on each iteration. Therefore we pass\n        // in |null| as the initial value (see the comment on\n        // EvaluatorPreprocessor_read() for why).\n        operation.args = null;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        var args = operation.args;\n        var fn = operation.fn;\n\n        switch (fn | 0) {\n          case OPS.paintXObject:\n            // eagerly compile XForm objects\n            name = args[0].name;\n            if (name) {\n              const localImage = localImageCache.getByName(name);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  const localImage = localImageCache.getByRef(xobj);\n                  if (localImage) {\n                    operatorList.addOp(localImage.fn, localImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    operatorList.addDependency(globalImage.objId);\n                    operatorList.addOp(globalImage.fn, globalImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name === \"Form\") {\n                  stateManager.save();\n                  self\n                    .buildFormXObject(\n                      resources,\n                      xobj,\n                      null,\n                      operatorList,\n                      task,\n                      stateManager.state.clone(),\n                      localColorSpaceCache\n                    )\n                    .then(function () {\n                      stateManager.restore();\n                      resolveXObject();\n                    }, rejectXObject);\n                  return;\n                } else if (type.name === \"Image\") {\n                  self\n                    .buildPaintImageXObject({\n                      resources,\n                      image: xobj,\n                      operatorList,\n                      cacheKey: name,\n                      localImageCache,\n                      localColorSpaceCache,\n                    })\n                    .then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === \"PS\") {\n                  // PostScript XObjects are unused when viewing documents.\n                  // See section 4.7.1 of Adobe's PDF reference.\n                  info(\"Ignored XObject subtype PS\");\n                } else {\n                  throw new FormatError(\n                    `Unhandled XObject subtype ${type.name}`\n                  );\n                }\n                resolveXObject();\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- sending unsupported feature\n                  // notification and allow rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorXObject,\n                  });\n                  warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setFont:\n            var fontSize = args[1];\n            // eagerly collect all fonts\n            next(\n              self\n                .handleSetFont(\n                  resources,\n                  args,\n                  null,\n                  operatorList,\n                  task,\n                  stateManager.state\n                )\n                .then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                })\n            );\n            return;\n          case OPS.beginText:\n            parsingText = true;\n            break;\n          case OPS.endText:\n            parsingText = false;\n            break;\n          case OPS.endInlineImage:\n            var cacheKey = args[0].cacheKey;\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n            next(\n              self.buildPaintImageXObject({\n                resources,\n                image: args[0],\n                isInline: true,\n                operatorList,\n                cacheKey,\n                localImageCache,\n                localColorSpaceCache,\n              })\n            );\n            return;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var arr = args[0];\n            var combinedGlyphs = [];\n            var arrLength = arr.length;\n            var state = stateManager.state;\n            for (i = 0; i < arrLength; ++i) {\n              var arrItem = arr[i];\n              if (isString(arrItem)) {\n                Array.prototype.push.apply(\n                  combinedGlyphs,\n                  self.handleText(arrItem, state)\n                );\n              } else if (isNum(arrItem)) {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n            args[0] = combinedGlyphs;\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n\n          case OPS.setFillColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.fillColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.fillColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setStrokeColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.strokeColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.strokeColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillGray:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setFillColorN:\n            cs = stateManager.state.fillColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setFillColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColorN:\n            cs = stateManager.state.strokeColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setStrokeColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n\n          case OPS.shadingFill:\n            var shadingRes = resources.get(\"Shading\");\n            if (!shadingRes) {\n              throw new FormatError(\"No shading resource found\");\n            }\n\n            var shading = shadingRes.get(args[0].name);\n            if (!shading) {\n              throw new FormatError(\"No shading object found\");\n            }\n\n            var shadingFill = Pattern.parseShading(\n              shading,\n              null,\n              xref,\n              resources,\n              self.handler,\n              self._pdfFunctionFactory,\n              localColorSpaceCache\n            );\n            var patternIR = shadingFill.getIR();\n            args = [patternIR];\n            fn = OPS.shadingFill;\n            break;\n          case OPS.setGState:\n            name = args[0].name;\n            if (name) {\n              const localGStateObj = localGStateCache.getByName(name);\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\n                }\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!name) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                self\n                  .setGState({\n                    resources,\n                    gState,\n                    operatorList,\n                    cacheKey: name,\n                    task,\n                    stateManager,\n                    localGStateCache,\n                    localColorSpaceCache,\n                  })\n                  .then(resolveGState, rejectGState);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorExtGState,\n                  });\n                  warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.moveTo:\n          case OPS.lineTo:\n          case OPS.curveTo:\n          case OPS.curveTo2:\n          case OPS.curveTo3:\n          case OPS.closePath:\n          case OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n          case OPS.markPoint:\n          case OPS.markPointProps:\n          case OPS.beginCompat:\n          case OPS.endCompat:\n            // Ignore operators where the corresponding handlers are known to\n            // be no-op in CanvasGraphics (display/canvas.js). This prevents\n            // serialization errors and is also a bit more efficient.\n            // We could also try to serialize all objects in a general way,\n            // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n            // but doing so is meaningless without knowing the semantics.\n            continue;\n          case OPS.beginMarkedContentProps:\n            if (!isName(args[0])) {\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              continue;\n            }\n            if (args[0].name === \"OC\") {\n              next(\n                self\n                  .parseMarkedContentProps(args[1], resources)\n                  .then(data => {\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\n                      \"OC\",\n                      data,\n                    ]);\n                  })\n                  .catch(reason => {\n                    if (reason instanceof AbortException) {\n                      return;\n                    }\n                    if (self.options.ignoreErrors) {\n                      self.handler.send(\"UnsupportedFeature\", {\n                        featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n                      });\n                      warn(\n                        `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n                      );\n                      return;\n                    }\n                    throw reason;\n                  })\n              );\n              return;\n            }\n            // Other marked content types aren't supported yet.\n            args = [args[0].name];\n\n            break;\n          case OPS.beginMarkedContent:\n          case OPS.endMarkedContent:\n          default:\n            // Note: Ignore the operator if it has `Dict` arguments, since\n            // those are non-serializable, otherwise postMessage will throw\n            // \"An object could not be cloned.\".\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof Dict) {\n                  break;\n                }\n              }\n              if (i < ii) {\n                warn(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n        }\n        operatorList.addOp(fn, args);\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      // Some PDFs don't close all restores inside object/form.\n      // Closing those for them.\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the OperatorList -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n        });\n        warn(\n          `getOperatorList - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        closePendingRestoreOPS();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    normalizeWhitespace = false,\n    combineTextItems = false,\n    sink,\n    seenStyles = Object.create(null),\n  }) {\n    // Ensure that `resources`/`stateManager` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    stateManager = stateManager || new StateManager(new TextState());\n\n    var WhitespaceRegexp = /\\s/g;\n\n    var textContent = {\n      items: [],\n      styles: Object.create(null),\n    };\n    var textContentItem = {\n      initialized: false,\n      str: [],\n      width: 0,\n      height: 0,\n      vertical: false,\n      lastAdvanceWidth: 0,\n      lastAdvanceHeight: 0,\n      textAdvanceScale: 0,\n      spaceWidth: 0,\n      fakeSpaceMin: Infinity,\n      fakeMultiSpaceMin: Infinity,\n      fakeMultiSpaceMax: -0,\n      textRunBreakAllowed: false,\n      transform: null,\n      fontName: null,\n    };\n    var SPACE_FACTOR = 0.3;\n    var MULTI_SPACE_FACTOR = 1.5;\n    var MULTI_SPACE_FACTOR_MAX = 4;\n\n    var self = this;\n    var xref = this.xref;\n\n    // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n    var xobjs = null;\n    const emptyXObjectCache = new LocalImageCache();\n    const emptyGStateCache = new LocalGStateCache();\n\n    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n    var textState;\n\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n      var font = textState.font;\n      if (!(font.loadedName in seenStyles)) {\n        seenStyles[font.loadedName] = true;\n        textContent.styles[font.loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical,\n        };\n      }\n      textContentItem.fontName = font.loadedName;\n\n      // 9.4.4 Text Space Details\n      var tsm = [\n        textState.fontSize * textState.textHScale,\n        0,\n        0,\n        textState.fontSize,\n        0,\n        textState.textRise,\n      ];\n\n      if (\n        font.isType3Font &&\n        textState.fontSize <= 1 &&\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n      ) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n\n      var trm = Util.transform(\n        textState.ctm,\n        Util.transform(textState.textMatrix, tsm)\n      );\n      textContentItem.transform = trm;\n      if (!font.vertical) {\n        textContentItem.width = 0;\n        textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n        textContentItem.height = 0;\n        textContentItem.vertical = true;\n      }\n\n      var a = textState.textLineMatrix[0];\n      var b = textState.textLineMatrix[1];\n      var scaleLineX = Math.sqrt(a * a + b * b);\n      a = textState.ctm[0];\n      b = textState.ctm[1];\n      var scaleCtmX = Math.sqrt(a * a + b * b);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n      textContentItem.lastAdvanceWidth = 0;\n      textContentItem.lastAdvanceHeight = 0;\n\n      var spaceWidth = (font.spaceWidth / 1000) * textState.fontSize;\n      if (spaceWidth) {\n        textContentItem.spaceWidth = spaceWidth;\n        textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n        textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n        textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;\n        // It's okay for monospace fonts to fake as much space as needed.\n        textContentItem.textRunBreakAllowed = !font.isMonospace;\n      } else {\n        textContentItem.spaceWidth = 0;\n        textContentItem.fakeSpaceMin = Infinity;\n        textContentItem.fakeMultiSpaceMin = Infinity;\n        textContentItem.fakeMultiSpaceMax = 0;\n        textContentItem.textRunBreakAllowed = false;\n      }\n\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n\n    function replaceWhitespace(str) {\n      // Replaces all whitespaces with standard spaces (0x20), to avoid\n      // alignment issues between the textLayer and the canvas if the text\n      // contains e.g. tabs (fixes issue6612.pdf).\n      var i = 0,\n        ii = str.length,\n        code;\n      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n        i++;\n      }\n      return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n    }\n\n    function runBidiTransform(textChunk) {\n      var str = textChunk.str.join(\"\");\n      var bidiResult = bidi(str, -1, textChunk.vertical);\n      return {\n        str: normalizeWhitespace\n          ? replaceWhitespace(bidiResult.str)\n          : bidiResult.str,\n        dir: bidiResult.dir,\n        width: textChunk.width,\n        height: textChunk.height,\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n      };\n    }\n\n    function handleSetFont(fontName, fontRef) {\n      return self\n        .loadFont(fontName, fontRef, resources)\n        .then(function (translated) {\n          textState.font = translated.font;\n          textState.fontMatrix =\n            translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n        });\n    }\n\n    function buildTextContentItem(chars) {\n      var font = textState.font;\n      var textChunk = ensureTextContentItem();\n      var width = 0;\n      var height = 0;\n      var glyphs = font.charsToGlyphs(chars);\n      for (var i = 0; i < glyphs.length; i++) {\n        var glyph = glyphs[i];\n        var glyphWidth = null;\n        if (font.vertical && glyph.vmetric) {\n          glyphWidth = glyph.vmetric[0];\n        } else {\n          glyphWidth = glyph.width;\n        }\n\n        var glyphUnicode = glyph.unicode;\n        var NormalizedUnicodes = getNormalizedUnicodes();\n        if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n          glyphUnicode = NormalizedUnicodes[glyphUnicode];\n        }\n        glyphUnicode = reverseIfRtl(glyphUnicode);\n\n        var charSpacing = textState.charSpacing;\n        if (glyph.isSpace) {\n          var wordSpacing = textState.wordSpacing;\n          charSpacing += wordSpacing;\n          if (wordSpacing > 0) {\n            addFakeSpaces(wordSpacing, textChunk.str);\n          }\n        }\n\n        var tx = 0;\n        var ty = 0;\n        if (!font.vertical) {\n          var w0 = glyphWidth * textState.fontMatrix[0];\n          tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n          width += tx;\n        } else {\n          var w1 = glyphWidth * textState.fontMatrix[0];\n          ty = w1 * textState.fontSize + charSpacing;\n          height += ty;\n        }\n        textState.translateTextMatrix(tx, ty);\n\n        textChunk.str.push(glyphUnicode);\n      }\n\n      if (!font.vertical) {\n        textChunk.lastAdvanceWidth = width;\n        textChunk.width += width;\n      } else {\n        textChunk.lastAdvanceHeight = height;\n        textChunk.height += Math.abs(height);\n      }\n\n      return textChunk;\n    }\n\n    function addFakeSpaces(width, strBuf) {\n      if (width < textContentItem.fakeSpaceMin) {\n        return;\n      }\n      if (width < textContentItem.fakeMultiSpaceMin) {\n        strBuf.push(\" \");\n        return;\n      }\n      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n      while (fakeSpaces-- > 0) {\n        strBuf.push(\" \");\n      }\n    }\n\n    function flushTextContentItem() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n\n      // Do final text scaling.\n      if (!textContentItem.vertical) {\n        textContentItem.width *= textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.height *= textContentItem.textAdvanceScale;\n      }\n      textContent.items.push(runBidiTransform(textContentItem));\n\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n\n    function enqueueChunk() {\n      const length = textContent.items.length;\n      if (length > 0) {\n        sink.enqueue(textContent, length);\n        textContent.items = [];\n        textContent.styles = Object.create(null);\n      }\n    }\n\n    var timeSlotManager = new TimeSlotManager();\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk();\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      var stop,\n        operation = {},\n        args = [];\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are not used beyond this loop, so\n        // we can reuse the same array on every iteration, thus avoiding\n        // unnecessary allocations.\n        args.length = 0;\n        operation.args = args;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        textState = stateManager.state;\n        var fn = operation.fn;\n        args = operation.args;\n        var advance, diff;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            // Optimization to ignore multiple identical Tf commands.\n            var fontNameArg = args[0].name,\n              fontSizeArg = args[1];\n            if (\n              textState.font &&\n              fontNameArg === textState.fontName &&\n              fontSizeArg === textState.fontSize\n            ) {\n              break;\n            }\n\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n          case OPS.setTextRise:\n            flushTextContentItem();\n            textState.textRise = args[0];\n            break;\n          case OPS.setHScale:\n            flushTextContentItem();\n            textState.textHScale = args[0] / 100;\n            break;\n          case OPS.setLeading:\n            flushTextContentItem();\n            textState.leading = args[0];\n            break;\n          case OPS.moveText:\n            // Optimization to treat same line movement as advance\n            var isSameTextLine = !textState.font\n              ? false\n              : (textState.font.vertical ? args[0] : args[1]) === 0;\n            advance = args[0] - args[1];\n            if (\n              combineTextItems &&\n              isSameTextLine &&\n              textContentItem.initialized &&\n              advance > 0 &&\n              advance <= textContentItem.fakeMultiSpaceMax\n            ) {\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textContentItem.width +=\n                args[0] - textContentItem.lastAdvanceWidth;\n              textContentItem.height +=\n                args[1] - textContentItem.lastAdvanceHeight;\n              diff =\n                args[0] -\n                textContentItem.lastAdvanceWidth -\n                (args[1] - textContentItem.lastAdvanceHeight);\n              addFakeSpaces(diff, textContentItem.str);\n              break;\n            }\n\n            flushTextContentItem();\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.setLeadingMoveText:\n            flushTextContentItem();\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.nextLine:\n            flushTextContentItem();\n            textState.carriageReturn();\n            break;\n          case OPS.setTextMatrix:\n            // Optimization to treat same line movement as advance.\n            advance = textState.calcTextLineMatrixAdvance(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            if (\n              combineTextItems &&\n              advance !== null &&\n              textContentItem.initialized &&\n              advance.value > 0 &&\n              advance.value <= textContentItem.fakeMultiSpaceMax\n            ) {\n              textState.translateTextLineMatrix(advance.width, advance.height);\n              textContentItem.width +=\n                advance.width - textContentItem.lastAdvanceWidth;\n              textContentItem.height +=\n                advance.height - textContentItem.lastAdvanceHeight;\n              diff =\n                advance.width -\n                textContentItem.lastAdvanceWidth -\n                (advance.height - textContentItem.lastAdvanceHeight);\n              addFakeSpaces(diff, textContentItem.str);\n              break;\n            }\n\n            flushTextContentItem();\n            textState.setTextMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            textState.setTextLineMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            break;\n          case OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n          case OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n          case OPS.beginText:\n            flushTextContentItem();\n            textState.textMatrix = IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var items = args[0];\n            var offset;\n            for (var j = 0, jj = items.length; j < jj; j++) {\n              if (typeof items[j] === \"string\") {\n                buildTextContentItem(items[j]);\n              } else if (isNum(items[j])) {\n                ensureTextContentItem();\n\n                // PDF Specification 5.3.2 states:\n                // The number is expressed in thousandths of a unit of text\n                // space.\n                // This amount is subtracted from the current horizontal or\n                // vertical coordinate, depending on the writing mode.\n                // In the default coordinate system, a positive adjustment\n                // has the effect of moving the next glyph painted either to\n                // the left or down by the given amount.\n                advance = (items[j] * textState.fontSize) / 1000;\n                var breakTextRun = false;\n                if (textState.font.vertical) {\n                  offset = advance;\n                  textState.translateTextMatrix(0, offset);\n                  breakTextRun =\n                    textContentItem.textRunBreakAllowed &&\n                    advance > textContentItem.fakeMultiSpaceMax;\n                  if (!breakTextRun) {\n                    // Value needs to be added to height to paint down.\n                    textContentItem.height += offset;\n                  }\n                } else {\n                  advance = -advance;\n                  offset = advance * textState.textHScale;\n                  textState.translateTextMatrix(offset, 0);\n                  breakTextRun =\n                    textContentItem.textRunBreakAllowed &&\n                    advance > textContentItem.fakeMultiSpaceMax;\n                  if (!breakTextRun) {\n                    // Value needs to be subtracted from width to paint left.\n                    textContentItem.width += offset;\n                  }\n                }\n                if (breakTextRun) {\n                  flushTextContentItem();\n                } else if (advance > 0) {\n                  addFakeSpaces(advance, textContentItem.str);\n                }\n              }\n            }\n            break;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            buildTextContentItem(args[0]);\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            flushTextContentItem();\n            textState.carriageReturn();\n            buildTextContentItem(args[0]);\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            flushTextContentItem();\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem(args[2]);\n            break;\n          case OPS.paintXObject:\n            flushTextContentItem();\n            if (!xobjs) {\n              xobjs = resources.get(\"XObject\") || Dict.empty;\n            }\n\n            var name = args[0].name;\n            if (name && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  if (emptyXObjectCache.getByRef(xobj)) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name !== \"Form\") {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n                  resolveXObject();\n                  return;\n                }\n\n                // Use a new `StateManager` to prevent incorrect positioning\n                // of textItems *after* the Form XObject, since errors in the\n                // data can otherwise prevent `restore` operators from\n                // executing.\n                // NOTE: Only an issue when `options.ignoreErrors === true`.\n                const currentState = stateManager.state.clone();\n                const xObjStateManager = new StateManager(currentState);\n\n                const matrix = xobj.dict.getArray(\"Matrix\");\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n\n                // Enqueue the `textContent` chunk before parsing the /Form\n                // XObject.\n                enqueueChunk();\n                const sinkWrapper = {\n                  enqueueInvoked: false,\n\n                  enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n\n                  get ready() {\n                    return sink.ready;\n                  },\n                };\n\n                self\n                  .getTextContent({\n                    stream: xobj,\n                    task,\n                    resources: xobj.dict.get(\"Resources\") || resources,\n                    stateManager: xObjStateManager,\n                    normalizeWhitespace,\n                    combineTextItems,\n                    sink: sinkWrapper,\n                    seenStyles,\n                  })\n                  .then(function () {\n                    if (!sinkWrapper.enqueueInvoked) {\n                      emptyXObjectCache.set(name, xobj.dict.objId, true);\n                    }\n                    resolveXObject();\n                  }, rejectXObject);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setGState:\n            name = args[0].name;\n            if (name && emptyGStateCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!name) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                const gStateFont = gState.get(\"Font\");\n                if (!gStateFont) {\n                  emptyGStateCache.set(name, gState.objId, true);\n\n                  resolveGState();\n                  return;\n                }\n                flushTextContentItem();\n\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                handleSetFont(null, gStateFont[0]).then(\n                  resolveGState,\n                  rejectGState\n                );\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n        } // switch\n        if (textContent.items.length >= sink.desiredSize) {\n          // Wait for ready, if we reach highWaterMark.\n          stop = true;\n          break;\n        }\n      } // while\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the TextContent -- allow text-extraction to continue.\n        warn(\n          `getTextContent - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  extractDataStructures(dict, baseDict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    // 9.10.2\n    var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n    var toUnicodePromise = toUnicode\n      ? this.readToUnicode(toUnicode)\n      : Promise.resolve(undefined);\n\n    if (properties.composite) {\n      // CIDSystemInfo helps to match CID to glyphs\n      var cidSystemInfo = dict.get(\"CIDSystemInfo\");\n      if (isDict(cidSystemInfo)) {\n        properties.cidSystemInfo = {\n          registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n          ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\"),\n        };\n      }\n\n      var cidToGidMap = dict.get(\"CIDToGIDMap\");\n      if (isStream(cidToGidMap)) {\n        cidToGidBytes = cidToGidMap.getBytes();\n      }\n    }\n\n    // Based on 9.6.6 of the spec the encoding can come from multiple places\n    // and depends on the font type. The base encoding and differences are\n    // read here, but the encoding that is actually used is chosen during\n    // glyph mapping in the font.\n    // TODO: Loading the built in encoding in the font would allow the\n    // differences to be merged in here not require us to hold on to it.\n    var differences = [];\n    var baseEncodingName = null;\n    var encoding;\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n      if (isDict(encoding)) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName = isName(baseEncodingName)\n          ? baseEncodingName.name\n          : null;\n        // Load the differences between the base and original\n        if (encoding.has(\"Differences\")) {\n          var diffEncoding = encoding.get(\"Differences\");\n          var index = 0;\n          for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n            var data = xref.fetchIfRef(diffEncoding[j]);\n            if (isNum(data)) {\n              index = data;\n            } else if (isName(data)) {\n              differences[index++] = data.name;\n            } else {\n              throw new FormatError(\n                `Invalid entry in 'Differences' array: ${data}`\n              );\n            }\n          }\n        }\n      } else if (isName(encoding)) {\n        baseEncodingName = encoding.name;\n      } else {\n        throw new FormatError(\"Encoding is not a Name nor a Dict\");\n      }\n      // According to table 114 if the encoding is a named encoding it must be\n      // one of these predefined encodings.\n      if (\n        baseEncodingName !== \"MacRomanEncoding\" &&\n        baseEncodingName !== \"MacExpertEncoding\" &&\n        baseEncodingName !== \"WinAnsiEncoding\"\n      ) {\n        baseEncodingName = null;\n      }\n    }\n\n    if (baseEncodingName) {\n      properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n    } else {\n      var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n      var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n      // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n      // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n      // font should use the `StandardEncoding` if no encoding is specified.\n      encoding = StandardEncoding;\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = WinAnsiEncoding;\n      }\n      // The Symbolic attribute can be misused for regular fonts\n      // Heuristic: we have to check if the font is a standard one also\n      if (isSymbolicFont) {\n        encoding = MacRomanEncoding;\n        if (!properties.file) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = SymbolSetEncoding;\n          } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n            encoding = ZapfDingbatsEncoding;\n          }\n        }\n      }\n      properties.defaultEncoding = encoding;\n    }\n\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    return toUnicodePromise\n      .then(readToUnicode => {\n        properties.toUnicode = readToUnicode;\n        return this.buildToUnicode(properties);\n      })\n      .then(builtToUnicode => {\n        properties.toUnicode = builtToUnicode;\n        if (cidToGidBytes) {\n          properties.cidToGidMap = this.readCidToGidMap(\n            cidToGidBytes,\n            builtToUnicode\n          );\n        }\n        return properties;\n      });\n  }\n\n  /**\n   * @returns {ToUnicodeMap}\n   * @private\n   */\n  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {\n    assert(!properties.composite, \"Must be a simple font.\");\n\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    // Merge in the differences array.\n    const differences = properties.differences;\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n      if (glyphName === \".notdef\") {\n        // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n        // where there should be spaces (fixes issue5256.pdf).\n        continue;\n      }\n      encoding[charcode] = glyphName;\n    }\n    const glyphsUnicodeMap = getGlyphsUnicode();\n    for (const charcode in encoding) {\n      // a) Map the character code to a character name.\n      let glyphName = encoding[charcode];\n      // b) Look up the character name in the Adobe Glyph List (see the\n      //    Bibliography) to obtain the corresponding Unicode value.\n      if (glyphName === \"\") {\n        continue;\n      } else if (glyphsUnicodeMap[glyphName] === undefined) {\n        // (undocumented) c) Few heuristics to recognize unknown glyphs\n        // NOTE: Adobe Reader does not do this step, but OSX Preview does\n        let code = 0;\n        switch (glyphName[0]) {\n          case \"G\": // Gxx glyph\n            if (glyphName.length === 3) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"g\": // g00xx glyph\n            if (glyphName.length === 5) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"C\": // Cdd{d} glyph\n          case \"c\": // cdd{d} glyph\n            if (glyphName.length >= 3 && glyphName.length <= 4) {\n              const codeStr = glyphName.substring(1);\n\n              if (forceGlyphs) {\n                code = parseInt(codeStr, 16);\n                break;\n              }\n              // Normally the Cdd{d}/cdd{d} glyphName format will contain\n              // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n              code = +codeStr;\n\n              // ... however some PDF generators violate that assumption by\n              // containing glyph, i.e. base 16, codes instead.\n              // In that case we need to re-parse the *entire* encoding to\n              // prevent broken text-selection (fixes issue9655_reduced.pdf).\n              if (\n                Number.isNaN(code) &&\n                Number.isInteger(parseInt(codeStr, 16))\n              ) {\n                return this._buildSimpleFontToUnicode(\n                  properties,\n                  /* forceGlyphs */ true\n                );\n              }\n            }\n            break;\n          default:\n            // 'uniXXXX'/'uXXXX{XX}' glyphs\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              code = unicode;\n            }\n        }\n        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n          // If `baseEncodingName` is one the predefined encodings, and `code`\n          // equals `charcode`, using the glyph defined in the baseEncoding\n          // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n          if (baseEncodingName && code === +charcode) {\n            const baseEncoding = getEncoding(baseEncodingName);\n            if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n              toUnicode[charcode] = String.fromCharCode(\n                glyphsUnicodeMap[glyphName]\n              );\n              continue;\n            }\n          }\n          toUnicode[charcode] = String.fromCodePoint(code);\n        }\n        continue;\n      }\n      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n    }\n    return new ToUnicodeMap(toUnicode);\n  }\n\n  /**\n   * Builds a char code to unicode map based on section 9.10 of the spec.\n   * @param {Object} properties Font properties object.\n   * @returns {Promise} A Promise that is resolved with a\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n   */\n  buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap =\n      !!properties.toUnicode && properties.toUnicode.length > 0;\n\n    // Section 9.10.2 Mapping Character Codes to Unicode Values\n    if (properties.hasIncludedToUnicodeMap) {\n      // Some fonts contain incomplete ToUnicode data, causing issues with\n      // text-extraction. For simple fonts, containing encoding information,\n      // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(\n          properties\n        );\n      }\n\n      return Promise.resolve(properties.toUnicode);\n    }\n\n    // According to the spec if the font is a simple font we should only map\n    // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n    // the differences array only contains adobe standard or symbol set names,\n    // in pratice it seems better to always try to create a toUnicode map\n    // based of the default encoding.\n    if (!properties.composite /* is simple font */) {\n      return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n    }\n\n    // If the font is a composite font that uses one of the predefined CMaps\n    // listed in Table 118 (except Identity–H and Identity–V) or whose\n    // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n    // Adobe-Korea1 character collection:\n    if (\n      properties.composite &&\n      ((properties.cMap.builtInCMap &&\n        !(properties.cMap instanceof IdentityCMap)) ||\n        (properties.cidSystemInfo.registry === \"Adobe\" &&\n          (properties.cidSystemInfo.ordering === \"GB1\" ||\n            properties.cidSystemInfo.ordering === \"CNS1\" ||\n            properties.cidSystemInfo.ordering === \"Japan1\" ||\n            properties.cidSystemInfo.ordering === \"Korea1\")))\n    ) {\n      // Then:\n      // a) Map the character code to a character identifier (CID) according\n      // to the font’s CMap.\n      // b) Obtain the registry and ordering of the character collection used\n      // by the font’s CMap (for example, Adobe and Japan1) from its\n      // CIDSystemInfo dictionary.\n      const registry = properties.cidSystemInfo.registry;\n      const ordering = properties.cidSystemInfo.ordering;\n      // c) Construct a second CMap name by concatenating the registry and\n      // ordering obtained in step (b) in the format registry–ordering–UCS2\n      // (for example, Adobe–Japan1–UCS2).\n      const ucs2CMapName = Name.get(registry + \"-\" + ordering + \"-UCS2\");\n      // d) Obtain the CMap with the name constructed in step (c) (available\n      // from the ASN Web site; see the Bibliography).\n      return CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (ucs2CMap) {\n        const cMap = properties.cMap;\n        const toUnicode = [];\n        cMap.forEach(function (charcode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          // e) Map the CID obtained in step (a) according to the CMap\n          // obtained in step (d), producing a Unicode value.\n          const ucs2 = ucs2CMap.lookup(cid);\n          if (ucs2) {\n            toUnicode[charcode] = String.fromCharCode(\n              (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n            );\n          }\n        });\n        return new ToUnicodeMap(toUnicode);\n      });\n    }\n\n    // The viewer's choice, just use an identity map.\n    return Promise.resolve(\n      new IdentityToUnicodeMap(properties.firstChar, properties.lastChar)\n    );\n  }\n\n  readToUnicode(toUnicode) {\n    var cmapObj = toUnicode;\n    if (isName(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cmap) {\n        if (cmap instanceof IdentityCMap) {\n          return new IdentityToUnicodeMap(0, 0xffff);\n        }\n        return new ToUnicodeMap(cmap.getMap());\n      });\n    } else if (isStream(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(\n        function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          var map = new Array(cmap.length);\n          // Convert UTF-16BE\n          // NOTE: cmap can be a sparse array, so use forEach instead of\n          // `for(;;)` to iterate over all keys.\n          cmap.forEach(function (charCode, token) {\n            var str = [];\n            for (var k = 0; k < token.length; k += 2) {\n              var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              if ((w1 & 0xf800) !== 0xd800) {\n                // w1 < 0xD800 || w1 > 0xDFFF\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCodePoint.apply(String, str);\n          });\n          return new ToUnicodeMap(map);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return null;\n          }\n          if (this.options.ignoreErrors) {\n            // Error in the ToUnicode data -- sending unsupported feature\n            // notification and allow font parsing to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n            });\n            warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n            return null;\n          }\n          throw reason;\n        }\n      );\n    }\n    return Promise.resolve(null);\n  }\n\n  readCidToGidMap(glyphsData, toUnicode) {\n    // Extract the encoding from the CIDToGIDMap\n\n    // Set encoding 0 to later verify the font has an encoding\n    var result = [];\n    for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n      var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n      const code = j >> 1;\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n      result[code] = glyphID;\n    }\n    return result;\n  }\n\n  extractWidths(dict, descriptor, properties) {\n    var xref = this.xref;\n    var glyphsWidths = [];\n    var defaultWidth = 0;\n    var glyphsVMetrics = [];\n    var defaultVMetrics;\n    var i, ii, j, jj, start, code, widths;\n    if (properties.composite) {\n      defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n      widths = dict.get(\"W\");\n      if (widths) {\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          start = xref.fetchIfRef(widths[i++]);\n          code = xref.fetchIfRef(widths[i]);\n          if (Array.isArray(code)) {\n            for (j = 0, jj = code.length; j < jj; j++) {\n              glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n            }\n          } else {\n            var width = xref.fetchIfRef(widths[++i]);\n            for (j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          }\n        }\n      }\n\n      if (properties.vertical) {\n        var vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n        if (vmetrics) {\n          for (i = 0, ii = vmetrics.length; i < ii; i++) {\n            start = xref.fetchIfRef(vmetrics[i++]);\n            code = xref.fetchIfRef(vmetrics[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsVMetrics[start++] = [\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j]),\n                ];\n              }\n            } else {\n              var vmetric = [\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n              ];\n              for (j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            }\n          }\n        }\n      }\n    } else {\n      var firstChar = properties.firstChar;\n      widths = dict.get(\"Widths\");\n      if (widths) {\n        j = firstChar;\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n        }\n        defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n      } else {\n        // Trying get the BaseFont metrics (see comment above).\n        var baseFontName = dict.get(\"BaseFont\");\n        if (isName(baseFontName)) {\n          var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n\n    // Heuristic: detection of monospace font by checking all non-zero widths\n    var isMonospace = true;\n    var firstWidth = defaultWidth;\n    for (var glyph in glyphsWidths) {\n      var glyphWidth = glyphsWidths[glyph];\n      if (!glyphWidth) {\n        continue;\n      }\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n    if (isMonospace) {\n      properties.flags |= FontFlags.FixedPitch;\n    }\n\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n\n  isSerifFont(baseFontName) {\n    // Simulating descriptor flags attribute\n    var fontNameWoStyle = baseFontName.split(\"-\")[0];\n    return (\n      fontNameWoStyle in getSerifFonts() ||\n      fontNameWoStyle.search(/serif/gi) !== -1\n    );\n  }\n\n  getBaseFontMetrics(name) {\n    var defaultWidth = 0;\n    var widths = [];\n    var monospace = false;\n    var stdFontMap = getStdFontMap();\n    var lookupName = stdFontMap[name] || name;\n    var Metrics = getMetrics();\n\n    if (!(lookupName in Metrics)) {\n      // Use default fonts for looking up font metrics if the passed\n      // font is not a base font\n      if (this.isSerifFont(name)) {\n        lookupName = \"Times-Roman\";\n      } else {\n        lookupName = \"Helvetica\";\n      }\n    }\n    var glyphWidths = Metrics[lookupName];\n\n    if (isNum(glyphWidths)) {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths(); // expand lazy widths array\n    }\n\n    return {\n      defaultWidth,\n      monospace,\n      widths,\n    };\n  }\n\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    var widths = Object.create(null);\n    var differences = properties.differences;\n    var encoding = properties.defaultEncoding;\n    for (var charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n    return widths;\n  }\n\n  preEvaluateFont(dict) {\n    var baseDict = dict;\n    var type = dict.get(\"Subtype\");\n    if (!isName(type)) {\n      throw new FormatError(\"invalid font Subtype\");\n    }\n\n    var composite = false;\n    var uint8array;\n    if (type.name === \"Type0\") {\n      // If font is a composite\n      //  - get the descendant font\n      //  - set the type according to the descendant font\n      //  - get the FontDescriptor from the descendant font\n      var df = dict.get(\"DescendantFonts\");\n      if (!df) {\n        throw new FormatError(\"Descendant fonts are not specified\");\n      }\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n      type = dict.get(\"Subtype\");\n      if (!isName(type)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n      composite = true;\n    }\n\n    var descriptor = dict.get(\"FontDescriptor\");\n    if (descriptor) {\n      var hash = new MurmurHash3_64();\n      var encoding = baseDict.getRaw(\"Encoding\");\n      if (isName(encoding)) {\n        hash.update(encoding.name);\n      } else if (isRef(encoding)) {\n        hash.update(encoding.toString());\n      } else if (isDict(encoding)) {\n        for (const entry of encoding.getRawValues()) {\n          if (isName(entry)) {\n            hash.update(entry.name);\n          } else if (isRef(entry)) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            // 'Differences' array (fixes bug1157493.pdf).\n            var diffLength = entry.length,\n              diffBuf = new Array(diffLength);\n\n            for (var j = 0; j < diffLength; j++) {\n              var diffEntry = entry[j];\n              if (isName(diffEntry)) {\n                diffBuf[j] = diffEntry.name;\n              } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n\n      const firstChar = dict.get(\"FirstChar\") || 0;\n      const lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n      hash.update(`${firstChar}-${lastChar}`);\n\n      var toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      if (isStream(toUnicode)) {\n        var stream = toUnicode.str || toUnicode;\n        uint8array = stream.buffer\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n          : new Uint8Array(\n              stream.bytes.buffer,\n              stream.start,\n              stream.end - stream.start\n            );\n        hash.update(uint8array);\n      } else if (isName(toUnicode)) {\n        hash.update(toUnicode.name);\n      }\n\n      var widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n      if (widths) {\n        uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n        hash.update(uint8array);\n      }\n    }\n\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      hash: hash ? hash.hexdigest() : \"\",\n    };\n  }\n\n  translateFont(preEvaluatedFont) {\n    var baseDict = preEvaluatedFont.baseDict;\n    var dict = preEvaluatedFont.dict;\n    var composite = preEvaluatedFont.composite;\n    var descriptor = preEvaluatedFont.descriptor;\n    var type = preEvaluatedFont.type;\n    var maxCharIndex = composite ? 0xffff : 0xff;\n    var properties;\n    const firstChar = dict.get(\"FirstChar\") || 0;\n    const lastChar = dict.get(\"LastChar\") || maxCharIndex;\n\n    if (!descriptor) {\n      if (type === \"Type3\") {\n        // FontDescriptor is only required for Type3 fonts when the document\n        // is a tagged pdf. Create a barbebones one to get by.\n        descriptor = new Dict(null);\n        descriptor.set(\"FontName\", Name.get(type));\n        descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n      } else {\n        // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n        // FontDescriptor was not required.\n        // This case is here for compatibility.\n        var baseFontName = dict.get(\"BaseFont\");\n        if (!isName(baseFontName)) {\n          throw new FormatError(\"Base font is not specified\");\n        }\n\n        // Using base font name as a font name.\n        baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n        var metrics = this.getBaseFontMetrics(baseFontName);\n\n        // Simulating descriptor flags attribute\n        var fontNameWoStyle = baseFontName.split(\"-\")[0];\n        var flags =\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\n          (getSymbolsFonts()[fontNameWoStyle]\n            ? FontFlags.Symbolic\n            : FontFlags.Nonsymbolic);\n\n        properties = {\n          type,\n          name: baseFontName,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          flags,\n          firstChar,\n          lastChar,\n        };\n        const widths = dict.get(\"Widths\");\n        return this.extractDataStructures(dict, dict, properties).then(\n          newProperties => {\n            if (widths) {\n              const glyphWidths = [];\n              let j = firstChar;\n              for (let i = 0, ii = widths.length; i < ii; i++) {\n                glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n              }\n              newProperties.widths = glyphWidths;\n            } else {\n              newProperties.widths = this.buildCharCodeToWidth(\n                metrics.widths,\n                newProperties\n              );\n            }\n            return new Font(baseFontName, null, newProperties);\n          }\n        );\n      }\n    }\n\n    // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n    // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n    // to ignore this rule when a variant of a standard font is used.\n    // TODO Fill the width array depending on which of the base font this is\n    // a variant.\n\n    var fontName = descriptor.get(\"FontName\");\n    var baseFont = dict.get(\"BaseFont\");\n    // Some bad PDFs have a string as the font name.\n    if (isString(fontName)) {\n      fontName = Name.get(fontName);\n    }\n    if (isString(baseFont)) {\n      baseFont = Name.get(baseFont);\n    }\n\n    if (type !== \"Type3\") {\n      var fontNameStr = fontName && fontName.name;\n      var baseFontStr = baseFont && baseFont.name;\n      if (fontNameStr !== baseFontStr) {\n        info(\n          `The FontDescriptor\\'s FontName is \"${fontNameStr}\" but ` +\n            `should be the same as the Font\\'s BaseFont \"${baseFontStr}\".`\n        );\n        // Workaround for cases where e.g. fontNameStr = 'Arial' and\n        // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n          fontName = baseFont;\n        }\n      }\n    }\n    fontName = fontName || baseFont;\n\n    if (!isName(fontName)) {\n      throw new FormatError(\"invalid font name\");\n    }\n\n    var fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n    if (fontFile) {\n      if (fontFile.dict) {\n        var subtype = fontFile.dict.get(\"Subtype\");\n        if (subtype) {\n          subtype = subtype.name;\n        }\n        var length1 = fontFile.dict.get(\"Length1\");\n        var length2 = fontFile.dict.get(\"Length2\");\n        var length3 = fontFile.dict.get(\"Length3\");\n      }\n    }\n\n    properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n      firstChar: firstChar || 0,\n      lastChar: lastChar || maxCharIndex,\n      bbox: descriptor.getArray(\"FontBBox\"),\n      ascent: descriptor.get(\"Ascent\"),\n      descent: descriptor.get(\"Descent\"),\n      xHeight: descriptor.get(\"XHeight\"),\n      capHeight: descriptor.get(\"CapHeight\"),\n      flags: descriptor.get(\"Flags\"),\n      italicAngle: descriptor.get(\"ItalicAngle\"),\n      isType3Font: false,\n    };\n\n    var cMapPromise;\n    if (composite) {\n      var cidEncoding = baseDict.get(\"Encoding\");\n      if (isName(cidEncoding)) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n      cMapPromise = CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cMap) {\n        properties.cMap = cMap;\n        properties.vertical = properties.cMap.vertical;\n      });\n    } else {\n      cMapPromise = Promise.resolve(undefined);\n    }\n\n    return cMapPromise\n      .then(() => {\n        return this.extractDataStructures(dict, baseDict, properties);\n      })\n      .then(newProperties => {\n        this.extractWidths(dict, descriptor, newProperties);\n\n        if (type === \"Type3\") {\n          newProperties.isType3Font = true;\n        }\n        return new Font(fontName.name, fontFile, newProperties);\n      });\n  }\n\n  static buildFontPaths(font, glyphs, handler) {\n    function buildPath(fontChar) {\n      if (font.renderer.hasBuiltPath(fontChar)) {\n        return;\n      }\n      handler.send(\"commonobj\", [\n        `${font.loadedName}_path_${fontChar}`,\n        \"FontPath\",\n        font.renderer.getPathJs(fontChar),\n      ]);\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n\n  static get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass TranslatedFont {\n  constructor({ loadedName, font, dict, extraProperties = false }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._extraProperties = extraProperties;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n\n    handler.send(\"commonobj\", [\n      this.loadedName,\n      \"Font\",\n      this.font.exportData(this._extraProperties),\n    ]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    // When font loading failed, fall back to the built-in font renderer.\n    this.font.disableFontFace = true;\n    // An arbitrary number of text rendering operators could have been\n    // encountered between the point in time when the 'Font' message was sent\n    // to the main-thread, and the point in time when the 'FontFallback'\n    // message was received on the worker-thread.\n    // To ensure that all 'FontPath's are available on the main-thread, when\n    // font loading failed, attempt to resend *all* previously parsed glyphs.\n    const glyphs = this.font.glyphCacheValues;\n    PartialEvaluator.buildFontPaths(this.font, glyphs, handler);\n  }\n\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n    // When parsing Type3 glyphs, always ignore them if there are errors.\n    // Compared to the parsing of e.g. an entire page, it doesn't really\n    // make sense to only be able to render a Type3 glyph partially.\n    var type3Options = Object.create(evaluator.options);\n    type3Options.ignoreErrors = false;\n    var type3Evaluator = evaluator.clone(type3Options);\n    type3Evaluator.parsingType3Font = true;\n\n    const translatedFont = this.font,\n      type3Dependencies = this.type3Dependencies;\n    var loadCharProcsPromise = Promise.resolve();\n    var charProcs = this.dict.get(\"CharProcs\");\n    var fontResources = this.dict.get(\"Resources\") || resources;\n    var charProcOperatorList = Object.create(null);\n\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(function () {\n        var glyphStream = charProcs.get(key);\n        var operatorList = new OperatorList();\n        return type3Evaluator\n          .getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          })\n          .then(function () {\n            charProcOperatorList[key] = operatorList.getIR();\n\n            for (const dependency of operatorList.dependencies) {\n              type3Dependencies.add(dependency);\n            }\n          })\n          .catch(function (reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            const dummyOperatorList = new OperatorList();\n            charProcOperatorList[key] = dummyOperatorList.getIR();\n          });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(function () {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n    });\n    return this.type3Loaded;\n  }\n}\n\nclass StateManager {\n  constructor(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n\n  save() {\n    var old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n\n  restore() {\n    var prev = this.stateStack.pop();\n    if (prev) {\n      this.state = prev;\n    }\n  }\n\n  transform(args) {\n    this.state.ctm = Util.transform(this.state.ctm, args);\n  }\n}\n\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    var m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  setTextLineMatrix(a, b, c, d, e, f) {\n    var m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  translateTextMatrix(x, y) {\n    var m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  translateTextLineMatrix(x, y) {\n    var m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n    var font = this.font;\n    if (!font) {\n      return null;\n    }\n    var m = this.textLineMatrix;\n    if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n      return null;\n    }\n    var txDiff = e - m[4],\n      tyDiff = f - m[5];\n    if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n      return null;\n    }\n    var tx,\n      ty,\n      denominator = a * d - b * c;\n    if (font.vertical) {\n      tx = (-tyDiff * c) / denominator;\n      ty = (tyDiff * a) / denominator;\n    } else {\n      tx = (txDiff * d) / denominator;\n      ty = (-txDiff * b) / denominator;\n    }\n    return { width: tx, height: ty, value: font.vertical ? ty : tx };\n  }\n\n  calcRenderMatrix(ctm) {\n    // 9.4.4 Text Space Details\n    var tsm = [\n      this.fontSize * this.textHScale,\n      0,\n      0,\n      this.fontSize,\n      0,\n      this.textRise,\n    ];\n    return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n  }\n\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n\n  clone() {\n    var clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n}\n\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n\n  clone() {\n    return Object.create(this);\n  }\n}\n\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    // Specifies properties for each command\n    //\n    // If variableArgs === true: [0, `numArgs`] expected\n    // If variableArgs === false: exactly `numArgs` expected\n    const getOPMap = getLookupTableFactory(function (t) {\n      // Graphic state\n      t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n      t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n      t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n      t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n      t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n      t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n      t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n      t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n      t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n      t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n      t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n      // Path\n      t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n      t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n      t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n      t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n      t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n      t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n      t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n      t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n      t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n      t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n      t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n      t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n      t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n      t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n      t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n      // Clipping\n      t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n      t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n      // Text\n      t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n      t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n      t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n      t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n      t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n      t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n      t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n      t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n      t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n      t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n      t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n      t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n      t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n      t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n      t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n      t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n      t['\"'] = {\n        id: OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false,\n      };\n\n      // Type3 fonts\n      t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n      t.d1 = {\n        id: OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false,\n      };\n\n      // Color\n      t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n      t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n      t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n      t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n      t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n      t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n      t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n      t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n      t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n      t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n      t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n      t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n      // Shading\n      t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n      // Images\n      t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n      t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n      t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n      // XObjects\n      t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n      t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n      t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n      t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n      t.BDC = {\n        id: OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false,\n      };\n      t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n      // Compatibility\n      t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n      t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n      // (reserved partial commands for the lexer)\n      t.BM = null;\n      t.BD = null;\n      t.true = null;\n      t.fa = null;\n      t.fal = null;\n      t.fals = null;\n      t.false = null;\n      t.nu = null;\n      t.nul = null;\n      t.null = null;\n    });\n\n    return shadow(this, \"opMap\", getOPMap());\n  }\n\n  static get MAX_INVALID_PATH_OPS() {\n    return shadow(this, \"MAX_INVALID_PATH_OPS\", 20);\n  }\n\n  constructor(stream, xref, stateManager) {\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref,\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n\n  // |operation| is an object with two fields:\n  //\n  // - |fn| is an out param.\n  //\n  // - |args| is an inout param. On entry, it should have one of two values.\n  //\n  //   - An empty array. This indicates that the caller is providing the\n  //     array in which the args will be stored in. The caller should use\n  //     this value if it can reuse a single array for each call to read().\n  //\n  //   - |null|. This indicates that the caller needs this function to create\n  //     the array in which any args are stored in. If there are zero args,\n  //     this function will leave |operation.args| as |null| (thus avoiding\n  //     allocations that would occur if we used an empty array to represent\n  //     zero arguments). Otherwise, it will replace |null| with a new array\n  //     containing the arguments. The caller should use this value if it\n  //     cannot reuse an array for each call to read().\n  //\n  // These two modes are present because this function is very hot and so\n  // avoiding allocations where possible is worthwhile.\n  //\n  read(operation) {\n    var args = operation.args;\n    while (true) {\n      var obj = this.parser.getObj();\n      if (obj instanceof Cmd) {\n        var cmd = obj.cmd;\n        // Check that the command is valid\n        var opSpec = EvaluatorPreprocessor.opMap[cmd];\n        if (!opSpec) {\n          warn(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n\n        var fn = opSpec.id;\n        var numArgs = opSpec.numArgs;\n        var argsLength = args !== null ? args.length : 0;\n\n        if (!opSpec.variableArgs) {\n          // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n          if (argsLength !== numArgs) {\n            var nonProcessedArgs = this.nonProcessedArgs;\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n\n          if (argsLength < numArgs) {\n            const partialMsg =\n              `command ${cmd}: expected ${numArgs} args, ` +\n              `but received ${argsLength} args.`;\n\n            // Incomplete path operators, in particular, can result in fairly\n            // chaotic rendering artifacts. Hence the following heuristics is\n            // used to error, rather than just warn, once a number of invalid\n            // path operators have been encountered (fixes bug1443140.pdf).\n            if (\n              fn >= OPS.moveTo &&\n              fn <= OPS.endPath && // Path operator\n              ++this._numInvalidPathOPS >\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n            ) {\n              throw new FormatError(`Invalid ${partialMsg}`);\n            }\n            // If we receive too few arguments, it's not possible to execute\n            // the command, hence we skip the command.\n            warn(`Skipping ${partialMsg}`);\n            if (args !== null) {\n              args.length = 0;\n            }\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          info(\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n              `but received ${argsLength} args.`\n          );\n        }\n\n        // TODO figure out how to type-check vararg functions\n        this.preprocessCommand(fn, args);\n\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n      if (obj === EOF) {\n        return false; // no more commands\n      }\n      // argument\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n        args.push(obj);\n        if (args.length > 33) {\n          throw new FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case OPS.save:\n        this.stateManager.save();\n        break;\n      case OPS.restore:\n        this.stateManager.restore();\n        break;\n      case OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n}\n\nexport { PartialEvaluator };\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  CMapCompressionType,\n  FormatError,\n  isString,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isCmd, isEOF, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nvar BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    var lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented.\n      dstLow =\n        dstLow.substring(0, lastByte) +\n        String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n\n  BinaryCMapStream.prototype = {\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    },\n    readSigned() {\n      var n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf,\n        sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      var i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = (stack[--sp] << bufferSize) | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    },\n    readString() {\n      var len = this.readNumber();\n      var s = \"\";\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    },\n  };\n\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function (resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"processBinaryCMap: Invalid dataSize.\");\n        }\n\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            reject(new Error(\"processBinaryCMap: Unknown type: \" + type));\n            return;\n        }\n      }\n\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n\n  // eslint-disable-next-line no-shadow\n  function BinaryCMapReader() {}\n\n  BinaryCMapReader.prototype = {\n    process: processBinaryCMap,\n  };\n\n  return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!isCmd(obj, \"]\") && !isEOF(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if (isEOF(obj)) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (\n      newCMap\n    ) {\n      cMap.useCMap = newCMap;\n      // If there aren't any code space ranges defined clone all the parent ones\n      // into this cMap.\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      // Merge the map into the current one, making sure not to override\n      // any previously defined entries.\n      cMap.useCMap.forEach(function (key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n\n      return cMap;\n    });\n  }\n\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === \"Identity-V\") {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error(\"Unknown CMap name: \" + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(\n        new Error(\"Built-in CMap parameters are not provided.\")\n      );\n    }\n\n    return fetchBuiltInCMap(name).then(function (data) {\n      var cMapData = data.cMapData,\n        compressionType = data.compressionType;\n      var cMap = new CMap(true);\n\n      if (compressionType === CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap, function (\n          useCMap\n        ) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === CMapCompressionType.NONE) {\n        var lexer = new Lexer(new Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(\n        new Error(\n          \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n        )\n      );\n    });\n  }\n\n  return {\n    async create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        var cMap = new CMap();\n        var lexer = new Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (\n          parsedCMap\n        ) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, IdentityCMap, CMapFactory };\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  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  isNum,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  readUint32,\n} from \"./core_utils.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nvar SEAC_ANALYSIS_ENABLED = true;\n\nconst EXPORT_DATA_PROPERTIES = [\n  \"ascent\",\n  \"bbox\",\n  \"black\",\n  \"bold\",\n  \"charProcOperatorList\",\n  \"composite\",\n  \"data\",\n  \"defaultVMetrics\",\n  \"defaultWidth\",\n  \"descent\",\n  \"fallbackName\",\n  \"fontMatrix\",\n  \"fontType\",\n  \"isMonospace\",\n  \"isSerifFont\",\n  \"isType3Font\",\n  \"italic\",\n  \"loadedName\",\n  \"mimetype\",\n  \"missingFile\",\n  \"name\",\n  \"remeasure\",\n  \"subtype\",\n  \"type\",\n  \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n  \"cMap\",\n  \"defaultEncoding\",\n  \"differences\",\n  \"isSymbolicFont\",\n  \"seacMap\",\n  \"toFontChar\",\n  \"toUnicode\",\n  \"vmetrics\",\n  \"widths\",\n];\n\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nvar MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return; // The font dictionary has a `ToUnicode` entry.\n  }\n  if (properties.hasEncoding) {\n    return; // The font dictionary has an `Encoding` entry.\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case \"Type1\":\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n  // eslint-disable-next-line no-shadow\n  function Glyph(\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  Glyph.prototype.matchesForCache = function (\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  };\n\n  return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function ToUnicodeMap(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n\n    forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n\n    has(i) {\n      return this._map[i] !== undefined;\n    },\n\n    get(i) {\n      return this._map[i];\n    },\n\n    charCodeOf(value) {\n      // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n      // are both very sparse and very large (see issue8372.pdf).\n      const map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (const charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    },\n\n    amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    },\n  };\n\n  return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n  // eslint-disable-next-line no-shadow\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return this.lastChar + 1 - this.firstChar;\n    },\n\n    forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n\n    has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n\n    get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n\n    charCodeOf(v) {\n      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n        ? v\n        : -1;\n    },\n\n    amend(map) {\n      unreachable(\"Should not call amend()\");\n    },\n  };\n\n  return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = (num >> 8) & 0xff;\n    dest[offset + 1] = num & 0xff;\n  }\n\n  function writeInt32(dest, offset, num) {\n    dest[offset] = (num >> 24) & 0xff;\n    dest[offset + 1] = (num >> 16) & 0xff;\n    dest[offset + 2] = (num >> 8) & 0xff;\n    dest[offset + 3] = num & 0xff;\n  }\n\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === \"string\") {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xff;\n      }\n    } else {\n      // treating everything else as array\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xff;\n      }\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(\n    entriesCount,\n    entrySize\n  ) {\n    var maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  };\n\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n\n      // Tables needs to be written by ascendant alphabetic order\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n\n      var i, j, jj, table, tableName;\n      // layout the tables data\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = ((table.length + 3) & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n\n      var file = new Uint8Array(offset);\n      // write the table data first (mostly for checksum)\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n\n      // sfnt version (4 bytes)\n      if (sfnt === \"true\") {\n        // Windows hates the Mac TrueType sfnt version number\n        sfnt = string32(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xff;\n      file[1] = sfnt.charCodeAt(1) & 0xff;\n      file[2] = sfnt.charCodeAt(2) & 0xff;\n      file[3] = sfnt.charCodeAt(3) & 0xff;\n\n      // numTables (2 bytes)\n      writeInt16(file, 4, numTables);\n\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n      // searchRange (2 bytes)\n      writeInt16(file, 6, searchParams.range);\n      // entrySelector (2 bytes)\n      writeInt16(file, 8, searchParams.entry);\n      // rangeShift (2 bytes)\n      writeInt16(file, 10, searchParams.rangeShift);\n\n      offset = OTF_HEADER_SIZE;\n      // writing table entries\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xff;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n        // checksum\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = readUint32(file, j);\n          checksum = (checksum + quad) >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n\n        // offset\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        // length\n        writeInt32(file, offset + 12, tables[tableName].length);\n\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error(\"Table \" + tag + \" already exists\");\n      }\n      this.tables[tag] = data;\n    },\n  };\n\n  return OpenTypeFileBuilder;\n})();\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n *   var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n *   type1Font.bind();\n */\nvar Font = (function FontClosure() {\n  // eslint-disable-next-line no-shadow\n  function Font(name, file, properties) {\n    var charCode;\n\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n\n    this.glyphCache = Object.create(null);\n\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    try {\n      var data;\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          var cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  function int16(b0, b1) {\n    return (b0 << 8) + b1;\n  }\n\n  function writeSignedInt16(bytes, index, value) {\n    bytes[index + 1] = value;\n    bytes[index] = value >>> 8;\n  }\n\n  function signedInt16(b0, b1) {\n    var value = (b0 << 8) + b1;\n    return value & (1 << 15) ? value - 0x10000 : value;\n  }\n\n  function int32(b0, b1, b2, b3) {\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  function string16(value) {\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function safeString16(value) {\n    // clamp value to the 16-bit int range\n    if (value > 0x7fff) {\n      value = 0x7fff;\n    } else if (value < -0x8000) {\n      value = -0x8000;\n    }\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (\n      readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n    );\n  }\n\n  function isTrueTypeCollectionFile(file) {\n    const header = file.peekBytes(4);\n    return bytesToString(header) === \"ttcf\";\n  }\n\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return bytesToString(header) === \"OTTO\";\n  }\n\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    // ... obviously some fonts violate that part of the specification,\n    // please refer to the comment in |Type1Font| below (pfb file header).\n    if (header[0] === 0x80 && header[1] === 0x01) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Compared to other font formats, the header in CFF files is not constant\n   * but contains version numbers. To reduce the possibility of misclassifying\n   * font files as CFF, it's recommended to check for other font formats first.\n   */\n  function isCFFFile(file) {\n    const header = file.peekBytes(4);\n    if (\n      /* major version, [1, 255] */ header[0] >= 1 &&\n      /* minor version, [0, 255]; header[1] */\n      /* header size, [0, 255]; header[2] */\n      /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n      header[3] <= 4\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function getFontFileType(file, { type, subtype, composite }) {\n    let fileType, fileSubtype;\n\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"TrueType\";\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType2\";\n      } else {\n        fileType = \"OpenType\";\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = \"CIDFontType0\";\n        fileSubtype = \"CIDFontType0C\";\n      } else {\n        fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n        fileSubtype = \"Type1C\";\n      }\n    } else {\n      warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n      fileType = type;\n      fileSubtype = subtype;\n    }\n\n    return [fileType, fileSubtype];\n  }\n\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [],\n      unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n\n  /**\n   * Rebuilds the char code to glyph ID map by moving all char codes to the\n   * private use area. This is done to avoid issues with various problematic\n   * unicode areas where either a glyph won't be drawn or is deformed by a\n   * shaper.\n   * @returns {Object} Two properties:\n   * 'toFontChar' - maps original char codes(the value that will be read\n   * from commands such as show text) to the char codes that will be used in the\n   * font that we build\n   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n   */\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      // For missing glyphs don't create the mappings so the glyph isn't\n      // drawn.\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          warn(\"Ran out of space in font private use area.\");\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode,\n    };\n  }\n\n  function getRanges(glyphs, numGlyphs) {\n    // Array.sort() sorts by characters, not numerically, so convert to an\n    // array of characters.\n    var codes = [];\n    for (var charCode in glyphs) {\n      // Remove an invalid glyph ID mappings to make OTS happy.\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n    }\n    // Some fonts have zero glyphs and are used only for text selection, but\n    // there needs to be at least one to build a valid cmap table.\n    if (codes.length === 0) {\n      codes.push({ fontCharCode: 0, glyphId: 0 });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n\n    // Split the sorted codes into ranges.\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length; ) {\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xffff) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n\n    return ranges;\n  }\n\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n    var cmap =\n      \"\\x00\\x00\" + // version\n      string16(numTables) + // numTables\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x01\" + // encodingID\n      string32(4 + numTables * 8); // start of the table record\n\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xffff) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n\n    if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n      ranges[i][1] = 0xfffe;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n    // Fill up the 4 parallel arrays describing the segments.\n    var startCount = \"\";\n    var endCount = \"\";\n    var idDeltas = \"\";\n    var idRangeOffsets = \"\";\n    var glyphsIds = \"\";\n    var bias = 0;\n\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += end - start + 1;\n\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n\n        idDeltas += string16((startCode - start) & 0xffff);\n        idRangeOffsets += string16(0);\n      }\n    }\n\n    if (trailingRangesCount > 0) {\n      endCount += \"\\xFF\\xFF\";\n      startCount += \"\\xFF\\xFF\";\n      idDeltas += \"\\x00\\x01\";\n      idRangeOffsets += \"\\x00\\x00\";\n    }\n\n    var format314 =\n      \"\\x00\\x00\" + // language\n      string16(2 * segCount) +\n      string16(searchParams.range) +\n      string16(searchParams.entry) +\n      string16(searchParams.rangeShift) +\n      endCount +\n      \"\\x00\\x00\" +\n      startCount +\n      idDeltas +\n      idRangeOffsets +\n      glyphsIds;\n\n    var format31012 = \"\";\n    var header31012 = \"\";\n    if (numTables > 1) {\n      cmap +=\n        \"\\x00\\x03\" + // platformID\n        \"\\x00\\x0A\" + // encodingID\n        string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n      format31012 = \"\";\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 +=\n              string32(start) + // startCharCode\n              string32(end) + // endCharCode\n              string32(code); // startGlyphID\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 +=\n          string32(start) + // startCharCode\n          string32(range[1]) + // endCharCode\n          string32(code); // startGlyphID\n      }\n      header31012 =\n        \"\\x00\\x0C\" + // format\n        \"\\x00\\x00\" + // reserved\n        string32(format31012.length + 16) + // length\n        \"\\x00\\x00\\x00\\x00\" + // language\n        string32(format31012.length / 12); // nGroups\n    }\n\n    return (\n      cmap +\n      \"\\x00\\x04\" + // format\n      string16(format314.length + 4) + // length\n      format314 +\n      header31012 +\n      format31012\n    );\n  }\n\n  function validateOS2Table(os2, file) {\n    file.pos = (file.start || 0) + os2.offset;\n    var version = file.getUint16();\n    // TODO verify all OS/2 tables fields, but currently we validate only those\n    // that give us issues\n    file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n    var selection = file.getUint16();\n    if (version < 4 && selection & 0x0300) {\n      return false;\n    }\n    var firstChar = file.getUint16();\n    var lastChar = file.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    file.skip(6); // skipping sTypoAscender/Descender/LineGap\n    var usWinAscent = file.getUint16();\n    if (usWinAscent === 0) {\n      // makes font unreadable by windows\n      return false;\n    }\n\n    // OS/2 appears to be valid, resetting some fields\n    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n    return true;\n  }\n\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0,\n    };\n\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n\n        var position = getUnicodeRangeFor(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << (position - 32);\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << (position - 64);\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << (position - 96);\n        } else {\n          throw new FormatError(\n            \"Unicode ranges Bits > 123 are reserved for internal usage\"\n          );\n        }\n      }\n      if (lastCharIndex > 0xffff) {\n        // OS2 only supports a 16 bit int. The spec says if supplementary\n        // characters are used the field should just be set to 0xFFFF.\n        lastCharIndex = 0xffff;\n      }\n    } else {\n      // TODO\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm =\n      override.unitsPerEm ||\n      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    // if the font units differ to the PDF glyph space units\n    // then scale up the values\n    var scale = properties.ascentScaled\n      ? 1.0\n      : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n    var typoAscent =\n      override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n    var typoDescent =\n      override.descent || Math.round(scale * (properties.descent || bbox[1]));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent; // fixing incorrect descent\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n\n    return (\n      \"\\x00\\x03\" + // version\n      \"\\x02\\x24\" + // xAvgCharWidth\n      \"\\x01\\xF4\" + // usWeightClass\n      \"\\x00\\x05\" + // usWidthClass\n      \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n      \"\\x02\\x8A\" + // ySubscriptXSize\n      \"\\x02\\xBB\" + // ySubscriptYSize\n      \"\\x00\\x00\" + // ySubscriptXOffset\n      \"\\x00\\x8C\" + // ySubscriptYOffset\n      \"\\x02\\x8A\" + // ySuperScriptXSize\n      \"\\x02\\xBB\" + // ySuperScriptYSize\n      \"\\x00\\x00\" + // ySuperScriptXOffset\n      \"\\x01\\xDF\" + // ySuperScriptYOffset\n      \"\\x00\\x31\" + // yStrikeOutSize\n      \"\\x01\\x02\" + // yStrikeOutPosition\n      \"\\x00\\x00\" + // sFamilyClass\n      \"\\x00\\x00\\x06\" +\n      String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n      \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n      string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n      string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n      string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n      string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n      \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n      string16(properties.italicAngle ? 1 : 0) + // fsSelection\n      string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n      string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n      string16(typoAscent) + // sTypoAscender\n      string16(typoDescent) + // sTypoDescender\n      \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n      string16(winAscent) + // usWinAscent\n      string16(winDescent) + // usWinDescent\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n      \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n      string16(properties.xHeight) + // sxHeight\n      string16(properties.capHeight) + // sCapHeight\n      string16(0) + // usDefaultChar\n      string16(firstCharIndex || properties.firstChar) + // usBreakChar\n      \"\\x00\\x03\"\n    ); // usMaxContext\n  }\n\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * 2 ** 16);\n    return (\n      \"\\x00\\x03\\x00\\x00\" + // Version number\n      string32(angle) + // italicAngle\n      \"\\x00\\x00\" + // underlinePosition\n      \"\\x00\\x00\" + // underlineThickness\n      string32(properties.fixedPitch) + // isFixedPitch\n      \"\\x00\\x00\\x00\\x00\" + // minMemType42\n      \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n      \"\\x00\\x00\\x00\\x00\" + // minMemType1\n      \"\\x00\\x00\\x00\\x00\"\n    ); // maxMemType1\n  }\n\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []]; // no strings and unicode strings\n    }\n\n    var strings = [\n      proto[0][0] || \"Original licence\", // 0.Copyright\n      proto[0][1] || name, // 1.Font family\n      proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n      proto[0][3] || \"uniqueID\", // 3.Unique ID\n      proto[0][4] || name, // 4.Full font name\n      proto[0][5] || \"Version 0.11\", // 5.Version\n      proto[0][6] || \"\", // 6.Postscript name\n      proto[0][7] || \"Unknown\", // 7.Trademark\n      proto[0][8] || \"Unknown\", // 8.Manufacturer\n      proto[0][9] || \"Unknown\", // 9.Designer\n    ];\n\n    // Mac want 1-byte per character strings while Windows want\n    // 2-bytes per character, so duplicate the names table\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(\"\"));\n    }\n\n    var names = [strings, stringsUnicode];\n    var platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n    var encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n    var languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable =\n      \"\\x00\\x00\" + // format\n      string16(namesRecordCount) + // Number of names Record\n      string16(namesRecordCount * 12 + 6); // Storage\n\n    // Build the name records field\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord =\n          platforms[i] + // platform ID\n          encodings[i] + // encoding ID\n          languages[i] + // language ID\n          string16(j) + // name ID\n          string16(str.length) +\n          string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n\n    nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n    return nameTable;\n  }\n\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    disableFontFace: false,\n\n    get renderer() {\n      var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return shadow(this, \"renderer\", renderer);\n    },\n\n    exportData(extraProperties = false) {\n      const exportDataProperties = extraProperties\n        ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n        : EXPORT_DATA_PROPERTIES;\n\n      const data = Object.create(null);\n      let property, value;\n      for (property of exportDataProperties) {\n        value = this[property];\n        // Ignore properties that haven't been explicitly set.\n        if (value !== undefined) {\n          data[property] = value;\n        }\n      }\n      return data;\n    },\n\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      this.missingFile = true;\n      // The file data is not specified. Trying to fix the font name\n      // to be used with the canvas.font.\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      let fontName = name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n      var stdFontMap = getStdFontMap(),\n        nonStdFontMap = getNonStdFontMap();\n      var isStandardFont =\n        !!stdFontMap[fontName] ||\n        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n      this.bold = fontName.search(/bold/gi) !== -1;\n      this.italic =\n        fontName.search(/oblique/gi) !== -1 ||\n        fontName.search(/italic/gi) !== -1;\n\n      // Use 'name' instead of 'fontName' here because the original\n      // name ArialBlack for example will be replaced by Helvetica.\n      this.black = name.search(/Black/g) !== -1;\n\n      // if at least one width is present, remeasure all chars when exists\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (\n        isStandardFont &&\n        type === \"CIDFontType2\" &&\n        this.cidEncoding.startsWith(\"Identity-\")\n      ) {\n        const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n        // Standard fonts might be embedded as CID font without glyph mapping.\n        // Building one based on GlyphMapForStandardFonts.\n        const map = [];\n        for (const charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack();\n          for (const charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          const SupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri();\n          for (const charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(\n          SymbolSetEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n        }\n        this.toFontChar = buildToFontChar(\n          ZapfDingbatsEncoding,\n          getDingbatsGlyphsUnicode(),\n          this.differences\n        );\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(\n          this.defaultEncoding,\n          getGlyphsUnicode(),\n          this.differences\n        );\n      } else {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        const map = [];\n        this.toUnicode.forEach((charCode, unicodeCharCode) => {\n          if (!this.composite) {\n            var glyphName =\n              this.differences[charCode] || this.defaultEncoding[charCode];\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          map[+charCode] = unicodeCharCode;\n        });\n\n        // Attempt to improve the glyph mapping for (some) composite fonts that\n        // appear to lack meaningful ToUnicode data.\n        if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n          if (/Verdana/i.test(name)) {\n            // Fixes issue11242_reduced.pdf\n            const GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n            for (const charCode in GlyphMapForStandardFonts) {\n              map[+charCode] = GlyphMapForStandardFonts[charCode];\n            }\n          }\n        }\n        this.toFontChar = map;\n      }\n      this.loadedName = fontName.split(\"-\")[0];\n      this.fontType = getFontType(type, subtype);\n    },\n\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      const VALID_TABLES = [\n        \"OS/2\",\n        \"cmap\",\n        \"head\",\n        \"hhea\",\n        \"hmtx\",\n        \"maxp\",\n        \"name\",\n        \"post\",\n        \"loca\",\n        \"glyf\",\n        \"fpgm\",\n        \"prep\",\n        \"cvt \",\n        \"CFF \",\n      ];\n\n      function readTables(file, numTables) {\n        const tables = Object.create(null);\n        tables[\"OS/2\"] = null;\n        tables.cmap = null;\n        tables.head = null;\n        tables.hhea = null;\n        tables.hmtx = null;\n        tables.maxp = null;\n        tables.name = null;\n        tables.post = null;\n\n        for (let i = 0; i < numTables; i++) {\n          const table = readTableEntry(file);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue; // skipping table if it's not a required or optional table\n          }\n          if (table.length === 0) {\n            continue; // skipping empty tables\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n\n      function readTableEntry(file) {\n        var tag = bytesToString(file.getBytes(4));\n\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n\n        // Read the table associated data\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n\n        if (tag === \"head\") {\n          // clearing checksum adjustment\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20; // Set font optimized for cleartype flag.\n        }\n\n        return {\n          tag,\n          checksum,\n          length,\n          offset,\n          data,\n        };\n      }\n\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: bytesToString(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16(),\n        };\n      }\n\n      function readTrueTypeCollectionHeader(ttc) {\n        const ttcTag = bytesToString(ttc.getBytes(4));\n        assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n        const majorVersion = ttc.getUint16();\n        const minorVersion = ttc.getUint16();\n        const numFonts = ttc.getInt32() >>> 0;\n        const offsetTable = [];\n        for (let i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n\n        const header = {\n          ttcTag,\n          majorVersion,\n          minorVersion,\n          numFonts,\n          offsetTable,\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new FormatError(\n          `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n        );\n      }\n\n      function readTrueTypeCollectionData(ttc, fontName) {\n        const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n\n        for (let i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          const potentialHeader = readOpenTypeHeader(ttc);\n          const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n          if (!potentialTables.name) {\n            throw new FormatError(\n              'TrueType Collection font must contain a \"name\" table.'\n            );\n          }\n          const nameTable = readNameTable(potentialTables.name);\n\n          for (let j = 0, jj = nameTable.length; j < jj; j++) {\n            for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n              const nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, \"\") === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n        throw new FormatError(\n          `TrueType Collection does not contain \"${fontName}\" font.`\n        );\n      }\n\n      /**\n       * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n       * PDF spec\n       */\n      function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          warn(\"No cmap table available.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n        var segment;\n        var start = (file.start ? file.start : 0) + cmap.offset;\n        file.pos = start;\n\n        file.skip(2); // version\n        var numTables = file.getUint16();\n\n        var potentialTable;\n        var canBreak = false;\n        // There's an order of preference in terms of which cmap subtable to\n        // use:\n        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n        // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n        // The following takes advantage of the fact that the tables are sorted\n        // to work.\n        for (var i = 0; i < numTables; i++) {\n          var platformId = file.getUint16();\n          var encodingId = file.getUint16();\n          var offset = file.getInt32() >>> 0;\n          var useTable = false;\n\n          // Sometimes there are multiple of the same type of table. Default\n          // to choosing the first table and skip the rest.\n          if (\n            potentialTable &&\n            potentialTable.platformId === platformId &&\n            potentialTable.encodingId === encodingId\n          ) {\n            continue;\n          }\n\n          if (\n            platformId === 0 &&\n            (encodingId === /* Unicode Default */ 0 ||\n              encodingId === /* Unicode 1.1 */ 1 ||\n              encodingId === /* Unicode BMP */ 3)\n          ) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (\n            platformId === 3 &&\n            encodingId === 1 &&\n            (hasEncoding || !potentialTable)\n          ) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n\n          if (useTable) {\n            potentialTable = {\n              platformId,\n              encodingId,\n              offset,\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n\n        if (potentialTable) {\n          file.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || file.peekByte() === -1) {\n          warn(\"Could not find a preferred cmap table.\");\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        var format = file.getUint16();\n        file.skip(2 + 2); // length + language\n\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n\n        // TODO(mack): refactor this cmap subtable reading logic out\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = file.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index,\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          // re-creating the table in format 4 since the encoding\n          // might be changed\n          var segCount = file.getUint16() >> 1;\n          file.skip(6); // skipping range fields\n          var segIndex,\n            segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: file.getUint16() });\n          }\n          file.skip(2);\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = file.getUint16();\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = file.getUint16();\n          }\n\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = file.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(\n              offsetsCount,\n              offsetIndex + segment.end - segment.start + 1\n            );\n          }\n\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(file.getUint16());\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n\n            for (j = start; j <= end; j++) {\n              if (j === 0xffff) {\n                continue;\n              }\n\n              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n              glyphId = (glyphId + delta) & 0xffff;\n              mappings.push({\n                charCode: j,\n                glyphId,\n              });\n            }\n          }\n        } else if (format === 6) {\n          // Format 6 is a 2-bytes dense mapping, which means the font data\n          // lives glue together even if they are pretty far in the unicode\n          // table. (This looks weird, so I can have missed something), this\n          // works on Linux but seems to fails on Mac so let's rewrite the\n          // cmap table to a 3-1-4 style\n          var firstCode = file.getUint16();\n          var entryCount = file.getUint16();\n\n          for (j = 0; j < entryCount; j++) {\n            glyphId = file.getUint16();\n            var charCode = firstCode + j;\n\n            mappings.push({\n              charCode,\n              glyphId,\n            });\n          }\n        } else {\n          warn(\"cmap table has unsupported format: \" + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        // removing duplicate entries\n        mappings.sort(function (a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings,\n          hasShortCmap,\n        };\n      }\n\n      function sanitizeMetrics(\n        file,\n        header,\n        metrics,\n        numGlyphs,\n        dupFirstEntry\n      ) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n\n        file.pos = (file.start ? file.start : 0) + header.offset;\n        file.pos += 4; // version\n        file.pos += 2; // ascent\n        file.pos += 2; // descent\n        file.pos += 2; // linegap\n        file.pos += 2; // adv_width_max\n        file.pos += 2; // min_sb1\n        file.pos += 2; // min_sb2\n        file.pos += 2; // max_extent\n        file.pos += 2; // caret_slope_rise\n        file.pos += 2; // caret_slope_run\n        file.pos += 2; // caret_offset\n        file.pos += 8; // reserved\n        file.pos += 2; // format\n        var numOfMetrics = file.getUint16();\n\n        if (numOfMetrics > numGlyphs) {\n          info(\n            \"The numOfMetrics (\" +\n              numOfMetrics +\n              \") should not be \" +\n              \"greater than the numGlyphs (\" +\n              numGlyphs +\n              \")\"\n          );\n          // Reduce numOfMetrics if it is greater than numGlyphs\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing =\n          numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n        if (numMissing > 0) {\n          // For each missing glyph, we set both the width and lsb to 0 (zero).\n          // Since we need to add two properties for each glyph, this explains\n          // the use of |numMissing * 2| when initializing the typed array.\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          if (dupFirstEntry) {\n            // Set the sidebearing value of the duplicated glyph.\n            entries[metrics.length] = metrics.data[2];\n            entries[metrics.length + 1] = metrics.data[3];\n          }\n          metrics.data = entries;\n        }\n      }\n\n      function sanitizeGlyph(\n        source,\n        sourceStart,\n        sourceEnd,\n        dest,\n        destStart,\n        hintsValid\n      ) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0,\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          // glyph with data less than 12 is invalid one\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          // OTS doesn't like contour count to be less than -1.\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          // complex glyph, writing as is\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n\n        var i,\n          j = 10,\n          flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = (glyf[j] << 8) | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        // skipping instructions\n        var instructionsStart = j;\n        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        // validating flags\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xc0) {\n            // reserved flags must be zero, cleaning up\n            glyf[j - 1] = flag & 0x3f;\n          }\n          let xLength = 2;\n          if (flag & 2) {\n            xLength = 1;\n          } else if (flag & 16) {\n            xLength = 0;\n          }\n          let yLength = 2;\n          if (flag & 4) {\n            yLength = 1;\n          } else if (flag & 32) {\n            yLength = 0;\n          }\n          const xyLength = xLength + yLength;\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        // glyph without coordinates will be rejected\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          // not enough data for coordinates\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(\n            glyf.subarray(instructionsEnd, glyphDataLength),\n            destStart + instructionsStart + 2\n          );\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = (glyphDataLength + 3) & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          // truncating and aligning to 4 bytes the long glyph data\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        // glyph data is fine\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n\n        // Validate version:\n        // Should always be 0x00010000\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          info(\"Attempting to fix invalid version in head table: \" + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          info(\n            \"Attempting to fix invalid indexToLocFormat in head table: \" +\n              indexToLocFormat\n          );\n\n          // The value of indexToLocFormat should be 0 if the loca table\n          // consists of short offsets, and should be 1 if the loca table\n          // consists of long offsets.\n          //\n          // The number of entries in the loca table should be numGlyphs + 1.\n          //\n          // Using this information, we can work backwards to deduce if the\n          // size of each offset in the loca table, and thus figure out the\n          // appropriate value for indexToLocFormat.\n\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            // 0x0000 indicates the loca table consists of short offsets\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            // 0x0001 indicates the loca table consists of long offsets\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new FormatError(\n              \"Could not fix indexToLocFormat: \" + indexToLocFormat\n            );\n          }\n        }\n      }\n\n      function sanitizeGlyphLocations(\n        loca,\n        glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      ) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return (\n              (data[offset] << 24) |\n              (data[offset + 1] << 16) |\n              (data[offset + 2] << 8) |\n              data[offset + 3]\n            );\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = (value >>> 24) & 0xff;\n            data[offset + 1] = (value >> 16) & 0xff;\n            data[offset + 2] = (value >> 8) & 0xff;\n            data[offset + 3] = value & 0xff;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return (data[offset] << 9) | (data[offset + 1] << 1);\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = (value >> 9) & 0xff;\n            data[offset + 1] = (value >> 1) & 0xff;\n          };\n        }\n        // The first glyph is duplicated.\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        // Resize loca table to account for duplicated glyph.\n        var locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        // removing the invalid glyphs\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n        // The spec says the offsets should be in ascending order, however\n        // this is not true for some fonts or they use the offset of 0 to mark a\n        // glyph as missing. OTS requires the offsets to be in order and not to\n        // be zero, so we must sort and rebuild the loca table and potentially\n        // re-arrange the glyf data.\n        var i, j;\n        const locaEntries = [];\n        // There are numGlyphs + 1 loca table entries.\n        for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n          let offset = itemDecode(locaData, j);\n          if (offset > oldGlyfDataLength) {\n            offset = oldGlyfDataLength;\n          }\n          locaEntries.push({\n            index: i,\n            offset,\n            endOffset: 0,\n          });\n        }\n        locaEntries.sort((a, b) => {\n          return a.offset - b.offset;\n        });\n        // Now the offsets are sorted, calculate the end offset of each glyph.\n        // The last loca entry's endOffset is not calculated since it's the end\n        // of the data and will be stored on the previous entry's endOffset.\n        for (i = 0; i < numGlyphs; i++) {\n          locaEntries[i].endOffset = locaEntries[i + 1].offset;\n        }\n        // Re-sort so glyphs aren't out of order.\n        locaEntries.sort((a, b) => {\n          return a.index - b.index;\n        });\n\n        var missingGlyphs = Object.create(null);\n        var writeOffset = 0;\n        itemEncode(locaData, 0, writeOffset);\n        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var glyphProfile = sanitizeGlyph(\n            oldGlyfData,\n            locaEntries[i].offset,\n            locaEntries[i].endOffset,\n            newGlyfData,\n            writeOffset,\n            hintsValid\n          );\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n        }\n\n        if (writeOffset === 0) {\n          // glyf table cannot be empty -- redoing the glyf and loca tables\n          // to have single glyph with one point\n          var simpleGlyph = new Uint8Array([\n            0,\n            1,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            0,\n            49,\n            0,\n          ]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          // Browsers will not display a glyph at position 0. Typically glyph 0\n          // is notdef, but a number of fonts put a valid glyph there so it must\n          // be duplicated and appended.\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(\n            loca.data,\n            locaData.length - itemSize,\n            writeOffset + firstEntryLength\n          );\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs,\n          maxSizeOfInstructions,\n        };\n      }\n\n      function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n\n        var length = post.length,\n          end = start + length;\n        var version = font.getInt32();\n        // skip rest to the tables\n        font.skip(28);\n\n        var glyphNames;\n        var valid = true;\n        var i;\n\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(\"\"));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            warn(\"Unknown/unsupported post table version \" + version);\n            valid = false;\n            if (propertiesObj.defaultEncoding) {\n              glyphNames = propertiesObj.defaultEncoding;\n            }\n            break;\n        }\n        propertiesObj.glyphNames = glyphNames;\n        return valid;\n      }\n\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n\n        var names = [[], []];\n        var length = nameTable.length,\n          end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          // unsupported name table format or table \"too\" small\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n\n        for (\n          i = 0;\n          i < numRecords && font.pos + NAME_RECORD_LENGTH <= end;\n          i++\n        ) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16(),\n          };\n          // using only Macintosh and Windows platform/encoding names\n          if (\n            (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n            (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n          ) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue; // Nothing to process, ignoring.\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue; // outside of name table, ignoring\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            // unicode\n            var str = \"\";\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n\n      // prettier-ignore\n      var TTOpsStackDeltas = [\n        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n      // 0xC0-DF == -1 and 0xE0-FF == -2\n\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0,\n          j,\n          n,\n          b,\n          funcId,\n          pc,\n          lastEndf = 0,\n          lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false,\n          ifLevel = 0,\n          inELSE = 0;\n        for (var ii = data.length; i < ii; ) {\n          var op = data[i++];\n          // The TrueType instruction set docs can be found at\n          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n          if (op === 0x40) {\n            // NPUSHB - pushes n bytes\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) {\n            // NPUSHW - pushes n words\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb0) {\n            // PUSHB - pushes bytes\n            n = op - 0xb0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xf8) === 0xb8) {\n            // PUSHW - pushes words\n            n = op - 0xb8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n            // CALL\n            if (!inFDEF && !inELSE) {\n              // collecting information about which functions are used\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                info(\"TT: CALL empty stack (or invalid entry).\");\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  const newStackLength =\n                    stack.length + ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    warn(\"TT: CALL invalid functions stack delta.\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (\n                  funcId in ttContext.functionsDefined &&\n                  !functionsCalled.includes(funcId)\n                ) {\n                  callstack.push({ data, i, stackTop: stack.length - 1 });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    warn(\"TT: CALL non-existent function\");\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n            // FDEF\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested FDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // collecting information about which functions are defined\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = { data, i };\n          } else if (op === 0x2d) {\n            // ENDF - end of function\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                warn(\"TT: ENDF bad stack\");\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] =\n                stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) {\n            // IDEF - instruction definition\n            if (inFDEF || inELSE) {\n              warn(\"TT: nested IDEFs not allowed\");\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // recording it as a function to track ENDF\n            lastDeff = i;\n          } else if (op === 0x58) {\n            // IF\n            ++ifLevel;\n          } else if (op === 0x1b) {\n            // ELSE\n            inELSE = ifLevel;\n          } else if (op === 0x59) {\n            // EIF\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1c) {\n            // JMPR\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              // only jumping forward to prevent infinite loop\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          // Adjusting stack not extactly, but just enough to get function id\n          if (!inFDEF && !inELSE) {\n            let stackDelta = 0;\n            if (op <= 0x8e) {\n              stackDelta = TTOpsStackDeltas[op];\n            } else if (op >= 0xc0 && op <= 0xdf) {\n              stackDelta = -1;\n            } else if (op >= 0xe0) {\n              stackDelta = -2;\n            }\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN); // pushing any number into stack\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          warn(\"TT: complementing a missing function tail\");\n          // new function definition started, but not finished\n          // complete function by [CLEAR, ENDF]\n          content.push(new Uint8Array([0x22, 0x2d]));\n        }\n        foldTTTable(table, content);\n      }\n\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          warn(\"TT: more functions defined than expected\");\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            warn(\"TT: invalid function id: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            warn(\"TT: undefined function: \" + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          // concatenating the content items\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = (newLength + 3) & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true,\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && cvt.length & 1) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n\n      // The following steps modify the original font data, making copy\n      font = new Stream(new Uint8Array(font.getBytes()));\n\n      let header, tables;\n      if (isTrueTypeCollectionFile(font)) {\n        const ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      let cff, cffFile;\n\n      var isTrueType = !tables[\"CFF \"];\n      if (!isTrueType) {\n        const isComposite =\n          properties.composite &&\n          ((properties.cidToGidMap || []).length > 0 ||\n            !(properties.cMap instanceof IdentityCMap));\n        // OpenType font (skip composite fonts with non-default glyph mapping).\n        if (\n          (header.version === \"OTTO\" && !isComposite) ||\n          !tables.head ||\n          !tables.hhea ||\n          !tables.maxp ||\n          !tables.post\n        ) {\n          // No major tables: throwing everything at `CFFFont`.\n          cffFile = new Stream(tables[\"CFF \"].data);\n          cff = new CFFFont(cffFile, properties);\n\n          adjustWidths(properties);\n\n          return this.convert(name, cff, properties);\n        }\n\n        delete tables.glyf;\n        delete tables.loca;\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n        this.isOpenType = true;\n      } else {\n        if (!tables.loca) {\n          throw new FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables.glyf) {\n          warn('Required \"glyf\" table is not found -- trying to recover.');\n          // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n          tables.glyf = {\n            tag: \"glyf\",\n            data: new Uint8Array(0),\n          };\n        }\n        this.isOpenType = false;\n      }\n\n      if (!tables.maxp) {\n        throw new FormatError('Required \"maxp\" table is not found');\n      }\n\n      font.pos = (font.start || 0) + tables.maxp.offset;\n      var version = font.getInt32();\n      const numGlyphs = font.getUint16();\n      // Glyph 0 is duplicated and appended.\n      let numGlyphsOut = numGlyphs + 1;\n      let dupFirstEntry = true;\n      if (numGlyphsOut > 0xffff) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        warn(\"Not enough space in glyfs to duplicate first glyph.\");\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        // maxZones can be invalid\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) {\n          // reset to 2 if font has invalid maxZones\n          tables.maxp.data[14] = 0;\n          tables.maxp.data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n\n      tables.maxp.data[4] = numGlyphsOut >> 8;\n      tables.maxp.data[5] = numGlyphsOut & 255;\n\n      var hintsValid = sanitizeTTPrograms(\n        tables.fpgm,\n        tables.prep,\n        tables[\"cvt \"],\n        maxFunctionDefs\n      );\n      if (!hintsValid) {\n        delete tables.fpgm;\n        delete tables.prep;\n        delete tables[\"cvt \"];\n      }\n\n      // Ensure the hmtx table contains the advance width and\n      // sidebearings information for numGlyphs in the maxp table\n      sanitizeMetrics(\n        font,\n        tables.hhea,\n        tables.hmtx,\n        numGlyphsOut,\n        dupFirstEntry\n      );\n\n      if (!tables.head) {\n        throw new FormatError('Required \"head\" table is not found');\n      }\n\n      sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(\n          tables.head.data[50],\n          tables.head.data[51]\n        );\n        var glyphsInfo = sanitizeGlyphLocations(\n          tables.loca,\n          tables.glyf,\n          numGlyphs,\n          isGlyphLocationsLong,\n          hintsValid,\n          dupFirstEntry,\n          maxSizeOfInstructions\n        );\n        missingGlyphs = glyphsInfo.missingGlyphs;\n\n        // Some fonts have incorrect maxSizeOfInstructions values, so we use\n        // the computed value instead.\n        if (version >= 0x00010000 && tables.maxp.length >= 22) {\n          tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables.hhea) {\n        throw new FormatError('Required \"hhea\" table is not found');\n      }\n\n      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n      // Sometimes it's 0. That needs to be fixed\n      if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n        tables.hhea.data[10] = 0xff;\n        tables.hhea.data[11] = 0xff;\n      }\n\n      // Extract some more font properties from the OpenType head and\n      // hhea tables; yMin and descent value are always negative.\n      var metricsOverride = {\n        unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n        yMax: int16(tables.head.data[42], tables.head.data[43]),\n        yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n        ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),\n        descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      };\n\n      // PDF FontDescriptor metrics lie -- using data from actual font.\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n      // The 'post' table has glyphs names.\n      if (tables.post) {\n        readPostScriptTable(tables.post, properties, numGlyphs);\n      }\n\n      // The original 'post' table is not needed, replace it.\n      tables.post = {\n        tag: \"post\",\n        data: createPostTable(properties),\n      };\n\n      const charCodeToGlyphId = [];\n\n      // Helper function to try to skip mapping of empty glyphs.\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n        properties.cMap.forEach(function (charCode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError(\"Max size of CID is 65,535\");\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        // Most of the following logic in this code branch is based on the\n        // 9.6.6.4 of the PDF spec.\n        var cmapTable = readCmapTable(\n          tables.cmap,\n          font,\n          this.isSymbolicFont,\n          properties.hasEncoding\n        );\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n        let baseEncoding = [];\n        if (\n          properties.hasEncoding &&\n          (properties.baseEncodingName === \"MacRomanEncoding\" ||\n            properties.baseEncodingName === \"WinAnsiEncoding\")\n        ) {\n          baseEncoding = getEncoding(properties.baseEncodingName);\n        }\n\n        // If the font has an encoding and is not symbolic then follow the\n        // rules in section 9.6.6.4 of the spec on how to map 3,1 and 1,0\n        // cmaps.\n        if (\n          properties.hasEncoding &&\n          !this.isSymbolicFont &&\n          ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n            (cmapPlatformId === 1 && cmapEncodingId === 0))\n        ) {\n          var glyphsUnicodeMap = getGlyphsUnicode();\n          for (let charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (\n              charCode in baseEncoding &&\n              baseEncoding[charCode] !== \"\"\n            ) {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            // Ensure that non-standard glyph names are resolved to valid ones.\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              // TODO: the encoding needs to be updated with mac os table.\n              unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n            }\n\n            for (let i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              break;\n            }\n          }\n        } else if (cmapPlatformId === 0) {\n          // Default Unicode semantics, use the charcodes as is.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCodeToGlyphId[cmapMappings[i].charCode] =\n              cmapMappings[i].glyphId;\n          }\n        } else {\n          // When there is only a (1, 0) cmap table, the char code is a single\n          // byte and it is used directly as the char code.\n\n          // When a (3, 0) cmap table is present, it is used instead but the\n          // spec has special rules for char codes in the range of 0xF000 to\n          // 0xF0FF and it says the (3, 0) table should map the values from\n          // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n          // this, the upper bits of the char code are cleared, but only for the\n          // special range since some PDFs have char codes outside of this range\n          // (e.g. 0x2013) which when masked would overwrite other values in the\n          // cmap.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            let charCode = cmapMappings[i].charCode;\n            if (\n              cmapPlatformId === 3 &&\n              charCode >= 0xf000 &&\n              charCode <= 0xf0ff\n            ) {\n              charCode &= 0xff;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n          }\n        }\n\n        // Last, try to map any missing charcodes using the post table.\n        if (properties.glyphNames && baseEncoding.length) {\n          for (let i = 0; i < 256; ++i) {\n            if (charCodeToGlyphId[i] === undefined && baseEncoding[i]) {\n              glyphName = baseEncoding[i];\n              const glyphId = properties.glyphNames.indexOf(glyphName);\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[i] = glyphId;\n              }\n            }\n          }\n        }\n      }\n\n      if (charCodeToGlyphId.length === 0) {\n        // defines at least one glyph\n        charCodeToGlyphId[0] = 0;\n      }\n\n      // Typically glyph 0 is duplicated and the mapping must be updated, but if\n      // there isn't enough room to duplicate, the glyph id is left the same. In\n      // this case, glyph 0 may not work correctly, but that is better than\n      // having the whole font fail.\n      let glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n\n      // Converting glyphs and ids into font's cmap table\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n\n      if (!isTrueType) {\n        try {\n          // Trying to repair CFF file\n          cffFile = new Stream(tables[\"CFF \"].data);\n          var parser = new CFFParser(\n            cffFile,\n            properties,\n            SEAC_ANALYSIS_ENABLED\n          );\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new CFFCompiler(cff);\n          tables[\"CFF \"].data = compiler.compile();\n        } catch (e) {\n          warn(\"Failed to compile font \" + properties.loadedName);\n        }\n      }\n\n      // Re-creating 'name' table\n      if (!tables.name) {\n        tables.name = {\n          tag: \"name\",\n          data: createNameTable(this.name),\n        };\n      } else {\n        // ... using existing 'name' table as prototype\n        var namePrototype = readNameTable(tables.name);\n        tables.name.data = createNameTable(name, namePrototype);\n      }\n\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n\n    convert: function Font_convert(fontName, font, properties) {\n      // TODO: Check the charstring widths to determine this.\n      properties.fixedPitch = false;\n\n      if (properties.builtInEncoding) {\n        // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n        // data, attempt to use the `builtInEncoding` to improve text selection.\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n\n      // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n      // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n      // char strings.\n      let glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[\n          newMapping.nextAvailableFontCharCode\n        ] = glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = StandardEncoding[seac[2]];\n          var accentGlyphName = StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n          };\n\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            // There's no point in mapping it if the char code was never mapped\n            // to begin with.\n            continue;\n          }\n          for (let i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            // Find a fontCharCode that maps to the base and accent glyphs.\n            // If one doesn't exists, create it.\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              baseGlyphId\n            );\n            var accentFontCharCode = createCharCode(\n              charCodeToGlyphId,\n              accentGlyphId\n            );\n            seacMap[charCode] = {\n              baseFontCharCode,\n              accentFontCharCode,\n              accentOffset,\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n\n      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n      var builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n      // PostScript Font Program\n      builder.addTable(\"CFF \", font.data);\n      // OS/2 and Windows Specific metrics\n      builder.addTable(\n        \"OS/2\",\n        createOS2Table(properties, newMapping.charCodeToGlyphId)\n      );\n      // Character to glyphs mapping\n      builder.addTable(\n        \"cmap\",\n        createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)\n      );\n      // Font header\n      builder.addTable(\n        \"head\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n          \"\\x00\\x00\"\n      ); // glyphDataFormat\n\n      // Horizontal header\n      builder.addTable(\n        \"hhea\",\n        \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n          string16(numGlyphs)\n      ); // Number of HMetrics\n\n      // Horizontal metrics\n      builder.addTable(\n        \"hmtx\",\n        (function fontFieldsHmtx() {\n          var charstrings = font.charstrings;\n          var cffWidths = font.cff ? font.cff.widths : null;\n          var hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n          for (let i = 1, ii = numGlyphs; i < ii; i++) {\n            var width = 0;\n            if (charstrings) {\n              var charstring = charstrings[i - 1];\n              width = \"width\" in charstring ? charstring.width : 0;\n            } else if (cffWidths) {\n              width = Math.ceil(cffWidths[i] || 0);\n            }\n            hmtx += string16(width) + string16(0);\n          }\n          return hmtx;\n        })()\n      );\n\n      // Maximum profile\n      builder.addTable(\n        \"maxp\",\n        \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n      ); // Num of glyphs\n\n      // Naming tables\n      builder.addTable(\"name\", createNameTable(fontName));\n\n      // PostScript information\n      builder.addTable(\"post\", createPostTable(properties));\n\n      return builder.toArray();\n    },\n\n    get spaceWidth() {\n      // trying to estimate space character width\n      var possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        // if possible, getting width by glyph name\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        // finding the charcode via unicodeToCID map\n        var charcode = 0;\n        if (this.composite && this.cMap.contains(glyphUnicode)) {\n          charcode = this.cMap.lookup(glyphUnicode);\n        }\n        // ... via toUnicode map\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        // setting it to unicode if negative or undefined\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        // trying to get width via charcode\n        width = this.widths[charcode];\n        if (width) {\n          break; // the non-zero width found\n        }\n      }\n      width = width || this.defaultWidth;\n      return shadow(this, \"spaceWidth\", width);\n    },\n\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = isNum(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n      let unicode =\n        this.toUnicode.get(charcode) ||\n        this.fallbackToUnicode.get(charcode) ||\n        charcode;\n      if (typeof unicode === \"number\") {\n        unicode = String.fromCharCode(unicode);\n      }\n\n      var isInFont = charcode in this.toFontChar;\n      // First try the toFontChar map, if it's not there then try falling\n      // back to the char code.\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        const glyphName =\n          this.differences[charcode] || this.defaultEncoding[charcode];\n        if (\n          (glyphName === \".notdef\" || glyphName === \"\") &&\n          this.type === \"Type1\"\n        ) {\n          // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n          // replace them with spaces.\n          fontCharCode = 0x20;\n        }\n        fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n      }\n\n      if (this.isType3Font) {\n        // Font char code in this case is actually a glyph name.\n        operatorListId = fontCharCode;\n      }\n\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset,\n        };\n      }\n\n      let fontChar = \"\";\n      if (typeof fontCharCode === \"number\") {\n        if (fontCharCode <= 0x10ffff) {\n          fontChar = String.fromCodePoint(fontCharCode);\n        } else {\n          warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n        }\n      }\n\n      var glyph = this.glyphCache[charcode];\n      if (\n        !glyph ||\n        !glyph.matchesForCache(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        )\n      ) {\n        glyph = new Glyph(\n          fontChar,\n          unicode,\n          accent,\n          width,\n          vmetric,\n          operatorListId,\n          isSpace,\n          isInFont\n        );\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n\n      // if we translated this string before, just grab it from the cache\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n\n      // lazily create the translation cache\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0,\n        ii;\n\n      if (this.cMap) {\n        // composite fonts have multi-byte strings convert the string from\n        // single-byte to multi-byte\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          // Space is char with code 0x20 and length 1 in multiple-byte codes.\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n\n      // Enter the translated string into the cache\n      return (charsCache[charsCacheKey] = glyphs);\n    },\n\n    get glyphCacheValues() {\n      return Object.values(this.glyphCache);\n    },\n  };\n\n  return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData(extraProperties = false) {\n      return { error: this.error };\n    },\n  };\n\n  return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  var differences = properties.differences,\n    glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n\n    var i = startIndex,\n      j,\n      found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found, skip over whitespace.\n        i += j;\n        while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found,\n      length: i,\n    };\n  }\n\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n    var streamStartPos = stream.pos; // Save the initial stream position.\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n      // cannot hold the result of `getBytes`, and fallback to simply checking\n      // the entire stream (fixes issue3928.pdf).\n    }\n\n    if (headerBytesLength === suggestedLength) {\n      // Most of the time `suggestedLength` is correct, so to speed things up we\n      // initially only check the last few bytes to see if the header was found.\n      // Otherwise we (potentially) check the entire stream to prevent errors in\n      // `Type1Parser` (fixes issue5686.pdf).\n      block = findBlock(\n        headerBytes,\n        EEXEC_SIGNATURE,\n        suggestedLength - 2 * EEXEC_SIGNATURE.length\n      );\n\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new Stream(headerBytes),\n          length: suggestedLength,\n        };\n      }\n    }\n    warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length; // Update the stream position.\n\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    if (actualLength) {\n      return {\n        stream: new Stream(stream.getBytes(actualLength)),\n        length: actualLength,\n      };\n    }\n    warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength,\n    };\n  }\n\n  function getEexecBlock(stream, suggestedLength) {\n    // We should ideally parse the eexec block to ensure that `suggestedLength`\n    // is correct, so we don't truncate the block data if it's too small.\n    // However, this would also require checking if the fixed-content portion\n    // exists (using the 'Length3' property), and ensuring that it's valid.\n    //\n    // Given that `suggestedLength` almost always is correct, all the validation\n    // would require a great deal of unnecessary parsing for most fonts.\n    // To save time, we always fetch the entire stream instead, which also avoid\n    // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n    //\n    // NOTE: This means that the function can include the fixed-content portion\n    // in the returned eexec block. In practice this does *not* seem to matter,\n    // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new Stream(eexecBytes),\n      length: eexecBytes.length,\n    };\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Font(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    var data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n\n    getCharset: function Type1Font_getCharset() {\n      var charset = [\".notdef\"];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n\n      if (properties.composite) {\n        const charCodeToGlyphId = Object.create(null);\n        // Map CIDs directly to GIDs.\n        for (\n          let glyphId = 0, charstringsLen = charstrings.length;\n          glyphId < charstringsLen;\n          glyphId++\n        ) {\n          const charCode = properties.cMap.charCodeOf(glyphId);\n          // Add 1 because glyph 0 is duplicated.\n          charCodeToGlyphId[charCode] = glyphId + 1;\n        }\n        return charCodeToGlyphId;\n      }\n\n      var glyphNames = [\".notdef\"],\n        glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        // notdef is always defined.\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          // Offset by 1 for .notdef\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n\n    getType2Charstrings: function Type1Font_getType2Charstrings(\n      type1Charstrings\n    ) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n\n      // Add a bunch of empty subrs to deal with the Type2 bias\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0b]);\n      }\n\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n\n      return type2Subrs;\n    },\n\n    wrap: function Type1Font_wrap(\n      name,\n      glyphs,\n      charstrings,\n      subrs,\n      properties\n    ) {\n      var cff = new CFF();\n      cff.header = new CFFHeader(1, 0, 4, 4);\n\n      cff.names = [name];\n\n      var topDict = new CFFTopDict();\n      // CFF strings IDs 0...390 are predefined names, so refering\n      // to entries in our own String INDEX starts at SID 391.\n      topDict.setByName(\"version\", 391);\n      topDict.setByName(\"Notice\", 392);\n      topDict.setByName(\"FullName\", 393);\n      topDict.setByName(\"FamilyName\", 394);\n      topDict.setByName(\"Weight\", 395);\n      topDict.setByName(\"Encoding\", null); // placeholder\n      topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n      topDict.setByName(\"FontBBox\", properties.bbox);\n      topDict.setByName(\"charset\", null); // placeholder\n      topDict.setByName(\"CharStrings\", null); // placeholder\n      topDict.setByName(\"Private\", null); // placeholder\n      cff.topDict = topDict;\n\n      var strings = new CFFStrings();\n      strings.add(\"Version 0.11\"); // Version\n      strings.add(\"See original notice\"); // Notice\n      strings.add(name); // FullName\n      strings.add(name); // FamilyName\n      strings.add(\"Medium\"); // Weight\n      cff.strings = strings;\n\n      cff.globalSubrIndex = new CFFIndex();\n\n      var count = glyphs.length;\n      var charsetArray = [\".notdef\"];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        const glyphName = charstrings[i].glyphName;\n        const index = CFFStandardStrings.indexOf(glyphName);\n        if (index === -1) {\n          strings.add(glyphName);\n        }\n        charsetArray.push(glyphName);\n      }\n      cff.charset = new CFFCharset(false, 0, charsetArray);\n\n      var charStringsIndex = new CFFIndex();\n      charStringsIndex.add([0x8b, 0x0e]); // .notdef\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n\n      var privateDict = new CFFPrivateDict();\n      privateDict.setByName(\"Subrs\", null); // placeholder\n      var fields = [\n        \"BlueValues\",\n        \"OtherBlues\",\n        \"FamilyBlues\",\n        \"FamilyOtherBlues\",\n        \"StemSnapH\",\n        \"StemSnapV\",\n        \"BlueShift\",\n        \"BlueFuzz\",\n        \"BlueScale\",\n        \"LanguageGroup\",\n        \"ExpansionFactor\",\n        \"ForceBold\",\n        \"StdHW\",\n        \"StdVW\",\n      ];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          // All of the private dictionary array data in CFF must be stored as\n          // \"delta-encoded\" numbers.\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1]; // ... difference from previous value\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n\n      var subrIndex = new CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n\n      var compiler = new CFFCompiler(cff);\n      return compiler.compile();\n    },\n  };\n\n  return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n  // eslint-disable-next-line no-shadow\n  function CFFFont(file, properties) {\n    this.properties = properties;\n\n    var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n  }\n\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        let charCode;\n        if (cff.isCIDFont) {\n          // If the font is actually a CID font then we should use the charset\n          // to map CIDs to GIDs.\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          // If it is NOT actually a CID font then CIDs should be mapped\n          // directly to GIDs.\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCode = properties.cMap.charCodeOf(glyphId);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    },\n  };\n\n  return CFFFont;\n})();\n\nexport {\n  SEAC_ANALYSIS_ENABLED,\n  ErrorFont,\n  Font,\n  FontFlags,\n  ToUnicodeMap,\n  IdentityToUnicodeMap,\n  getFontType,\n};\n","/* Copyright 2016 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  bytesToString,\n  FormatError,\n  info,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nvar CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nvar CFFParser = (function CFFParserClosure() {\n  var CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  var CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  // eslint-disable-next-line no-shadow\n  class CFFParser {\n    constructor(file, properties, seacAnalysisEnabled) {\n      this.bytes = file.getBytes();\n      this.properties = properties;\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    }\n\n    parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      var charStringOffset = topDict.getByName(\"CharStrings\");\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      var fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      var fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    }\n\n    parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    }\n\n    parseDict(dict) {\n      var pos = 0;\n\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        var str = \"\";\n        var eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      var operands = [];\n      var entries = [];\n\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    }\n\n    parseIndex(pos) {\n      var cffIndex = new CFFIndex();\n      var bytes = this.bytes;\n      var count = (bytes[pos++] << 8) | bytes[pos++];\n      var offsets = [];\n      var end = pos;\n      var i, ii;\n\n      if (count !== 0) {\n        var offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        var startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    }\n\n    parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    }\n\n    parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    }\n\n    createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    }\n\n    parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n\n      var length = data.length;\n\n      for (var j = 0; j < length; ) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    }\n\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    }\n\n    emptyPrivateDictionary(parentDict) {\n      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    }\n\n    parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName(\"Subrs\");\n      var relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    }\n\n    parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      var id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    }\n\n    parseEncoding(pos, properties, strings, charset) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        var dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    }\n\n    parseFDSelect(pos, length) {\n      var bytes = this.bytes;\n      var format = bytes[pos++];\n      var fdSelect = [];\n      var i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            var id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    }\n  }\n  return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n\n  duplicateFirstGlyph() {\n    // Browsers will not display a glyph at position 0. Typically glyph 0 is\n    // notdef, but a number of fonts put a valid glyph there so it must be\n    // duplicated and appended.\n    if (this.charStrings.count >= 65535) {\n      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n    var glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n    var glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n}\n\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n}\n\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n    return CFFStandardStrings[0];\n  }\n\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n    if (index !== -1) {\n      return index;\n    }\n    index = this.strings.indexOf(str);\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n    return -1;\n  }\n\n  add(value) {\n    this.strings.push(value);\n  }\n\n  get count() {\n    return this.strings.length;\n  }\n}\n\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n\n  get(index) {\n    return this.objects[index];\n  }\n\n  get count() {\n    return this.objects.length;\n  }\n}\n\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n\n  // value should always be an array\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n    var valueLength = value.length;\n    // ignore empty values\n    if (valueLength === 0) {\n      return true;\n    }\n    // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n    for (var i = 0; i < valueLength; i++) {\n      if (isNaN(value[i])) {\n        warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n        return true;\n      }\n    }\n    var type = this.types[key];\n    // remove the array wrapping these types of values\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n    this.values[key] = value;\n    return true;\n  }\n\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name ${name}\"`);\n    }\n    var key = this.nameToKeyMap[name];\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n    return this.values[key];\n  }\n\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n\n  static createTables(layout) {\n    var tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  }\n}\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n  var layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFTopDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.privateDict = null;\n    }\n  }\n  return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n  var layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  var tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFPrivateDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.subrsIndex = null;\n    }\n  }\n  return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n}\n\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n}\n\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n    return this.fdSelect[glyphIndex];\n  }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n\n  isTracking(key) {\n    return key in this.offsets;\n  }\n\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new FormatError(`Already tracking location of ${key}`);\n    }\n    this.offsets[key] = location;\n  }\n\n  offset(value) {\n    for (var key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new FormatError(`Not tracking location of ${key}`);\n    }\n    var data = output.data;\n    var dataOffset = this.offsets[key];\n    var size = 5;\n    for (var i = 0, ii = values.length; i < ii; ++i) {\n      var offset0 = i * size + dataOffset;\n      var offset1 = offset0 + 1;\n      var offset2 = offset0 + 2;\n      var offset3 = offset0 + 3;\n      var offset4 = offset0 + 4;\n      // It's easy to screw up offsets so perform this sanity check.\n      if (\n        data[offset0] !== 0x1d ||\n        data[offset1] !== 0 ||\n        data[offset2] !== 0 ||\n        data[offset3] !== 0 ||\n        data[offset4] !== 0\n      ) {\n        throw new FormatError(\"writing to an offset that is not empty\");\n      }\n      var value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = (value >> 24) & 0xff;\n      data[offset2] = (value >> 16) & 0xff;\n      data[offset3] = (value >> 8) & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n\n  compile() {\n    var cff = this.cff;\n    var output = {\n      data: [],\n      length: 0,\n      add: function CFFCompiler_add(data) {\n        this.data = this.data.concat(data);\n        this.length = this.data.length;\n      },\n    };\n\n    // Compile the five entries that must be in order.\n    var header = this.compileHeader(cff.header);\n    output.add(header);\n\n    var nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n\n    if (cff.isCIDFont) {\n      // The spec is unclear on how font matrices should relate to each other\n      // when there is one in the main top dict and the sub top dicts.\n      // Windows handles this differently than linux and osx so we have to\n      // normalize to work on all.\n      // Rules based off of some mailing list discussions:\n      // - If main font has a matrix and subfont doesn't, use the main matrix.\n      // - If no main font matrix and there is a subfont matrix, use the\n      //   subfont matrix.\n      // - If both have matrices, concat together.\n      // - If neither have matrices, use default.\n      // To make this work on all platforms we move the top matrix into each\n      // sub top dict and concat if necessary.\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        var base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n        for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n          var subDict = cff.fdArray[i];\n          var matrix = base.slice(0);\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n\n    cff.topDict.setByName(\"charset\", 0);\n    var compiled = this.compileTopDicts(\n      [cff.topDict],\n      output.length,\n      cff.isCIDFont\n    );\n    output.add(compiled.output);\n    var topDictTracker = compiled.trackers[0];\n\n    var stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n\n    var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n\n    // Now start on the other entries that have no specific order.\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\n          \"Encoding\",\n          [cff.encoding.format],\n          output\n        );\n      } else {\n        var encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n    var charset = this.compileCharset(\n      cff.charset,\n      cff.charStrings.count,\n      cff.strings,\n      cff.isCIDFont\n    );\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n\n    var charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n\n    if (cff.isCIDFont) {\n      // For some reason FDSelect must be in front of FDArray on windows. OSX\n      // and linux don't seem to care.\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      var fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      // It is unclear if the sub font dictionary can have CID related\n      // dictionary keys, but the sanitizer doesn't like them so remove them.\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      var fontDictTrackers = compiled.trackers;\n\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n    // If the font data ends with INDEX whose object data is zero-length,\n    // the sanitizer will bail out. Add a dummy byte to avoid that.\n    output.add([0]);\n\n    return output.data;\n  }\n\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n    return this.encodeFloat(value);\n  }\n\n  static get EncodeFloatRegExp() {\n    return shadow(\n      this,\n      \"EncodeFloatRegExp\",\n      /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n    );\n  }\n\n  encodeFloat(num) {\n    var value = num.toString();\n\n    // Rounding inaccurate doubles.\n    var m = CFFCompiler.EncodeFloatRegExp.exec(value);\n    if (m) {\n      var epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n\n    var nibbles = \"\";\n    var i, ii;\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      var a = value[i];\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    var out = [30];\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n    return out;\n  }\n\n  encodeInteger(value) {\n    var code;\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value = value - 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n    } else {\n      code = [\n        0x1d,\n        (value >> 24) & 0xff,\n        (value >> 16) & 0xff,\n        (value >> 8) & 0xff,\n        value & 0xff,\n      ];\n    }\n    return code;\n  }\n\n  compileHeader(header) {\n    return [header.major, header.minor, header.hdrSize, header.offSize];\n  }\n\n  compileNameIndex(names) {\n    var nameIndex = new CFFIndex();\n    for (var i = 0, ii = names.length; i < ii; ++i) {\n      var name = names[i];\n      // OTS doesn't allow names to be over 127 characters.\n      var length = Math.min(name.length, 127);\n      var sanitizedName = new Array(length);\n      for (var j = 0; j < length; j++) {\n        // OTS requires chars to be between a range and not certain other\n        // chars.\n        var char = name[j];\n        if (\n          char < \"!\" ||\n          char > \"~\" ||\n          char === \"[\" ||\n          char === \"]\" ||\n          char === \"(\" ||\n          char === \")\" ||\n          char === \"{\" ||\n          char === \"}\" ||\n          char === \"<\" ||\n          char === \">\" ||\n          char === \"/\" ||\n          char === \"%\"\n        ) {\n          char = \"_\";\n        }\n        sanitizedName[j] = char;\n      }\n      sanitizedName = sanitizedName.join(\"\");\n\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n      nameIndex.add(stringToBytes(sanitizedName));\n    }\n    return this.compileIndex(nameIndex);\n  }\n\n  compileTopDicts(dicts, length, removeCidKeys) {\n    var fontDictTrackers = [];\n    var fdArrayIndex = new CFFIndex();\n    for (var i = 0, ii = dicts.length; i < ii; ++i) {\n      var fontDict = dicts[i];\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n      var fontDictTracker = new CFFOffsetTracker();\n      var fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex,\n    };\n  }\n\n  compilePrivateDicts(dicts, trackers, output) {\n    for (var i = 0, ii = dicts.length; i < ii; ++i) {\n      var fontDict = dicts[i];\n      var privateDict = fontDict.privateDict;\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new FormatError(\"There must be a private dictionary.\");\n      }\n      var privateDictTracker = new CFFOffsetTracker();\n      var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n      var outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n      if (!privateDictData.length) {\n        // The private dictionary was empty, set the output length to zero to\n        // ensure the offset length isn't out of bounds in the eyes of the\n        // sanitizer.\n        outputLength = 0;\n      }\n\n      trackers[i].setEntryLocation(\n        \"Private\",\n        [privateDictData.length, outputLength],\n        output\n      );\n      output.add(privateDictData);\n\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        var subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\n          \"Subrs\",\n          [privateDictData.length],\n          output\n        );\n        output.add(subrs);\n      }\n    }\n  }\n\n  compileDict(dict, offsetTracker) {\n    var out = [];\n    // The dictionary keys must be in a certain order.\n    var order = dict.order;\n    for (var i = 0; i < order.length; ++i) {\n      var key = order[i];\n      if (!(key in dict.values)) {\n        continue;\n      }\n      var values = dict.values[key];\n      var types = dict.types[key];\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n\n      // Remove any empty dict values.\n      if (values.length === 0) {\n        continue;\n      }\n\n      for (var j = 0, jj = types.length; j < jj; ++j) {\n        var type = types[j];\n        var value = values[j];\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out = out.concat(this.encodeNumber(value));\n            break;\n          case \"offset\":\n            // For offsets we just insert a 32bit integer so we don't have to\n            // deal with figuring out the length of the offset when it gets\n            // replaced later on by the compiler.\n            var name = dict.keyToNameMap[key];\n            // Some offsets have the offset and the length, so just record the\n            // position of the first one.\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n            out = out.concat([0x1d, 0, 0, 0, 0]);\n            break;\n          case \"array\":\n          case \"delta\":\n            out = out.concat(this.encodeNumber(value));\n            for (var k = 1, kk = values.length; k < kk; ++k) {\n              out = out.concat(this.encodeNumber(values[k]));\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown data type of ${type}`);\n        }\n      }\n      out = out.concat(dict.opcodes[key]);\n    }\n    return out;\n  }\n\n  compileStringIndex(strings) {\n    var stringIndex = new CFFIndex();\n    for (var i = 0, ii = strings.length; i < ii; ++i) {\n      stringIndex.add(stringToBytes(strings[i]));\n    }\n    return this.compileIndex(stringIndex);\n  }\n\n  compileGlobalSubrIndex() {\n    var globalSubrIndex = this.cff.globalSubrIndex;\n    this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n  }\n\n  compileCharStrings(charStrings) {\n    var charStringsIndex = new CFFIndex();\n    for (var i = 0; i < charStrings.count; i++) {\n      var glyph = charStrings.get(i);\n      // If the CharString outline is empty, replace it with .notdef to\n      // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n      charStringsIndex.add(glyph);\n    }\n    return this.compileIndex(charStringsIndex);\n  }\n\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    // Freetype requires the number of charset strings be correct and MacOS\n    // requires a valid mapping for printing.\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n    if (isCIDFont) {\n      // In a CID font, the charset is a mapping of CIDs not SIDs so just\n      // create an identity mapping.\n      out = new Uint8Array([\n        2, // format\n        0, // first CID upper byte\n        0, // first CID lower byte\n        (numGlyphsLessNotDef >> 8) & 0xff,\n        numGlyphsLessNotDef & 0xff,\n      ]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0; // format 0\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n          if (sid === -1) {\n            sid = 0;\n            if (!warned) {\n              warned = true;\n              warn(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n        out[i] = (sid >> 8) & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n        break;\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [\n          format,\n          0, // nRanges place holder\n          0, // nRanges place holder\n          (start >> 8) & 0xff,\n          start & 0xff,\n          lastFD,\n        ];\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n          if (currentFD !== lastFD) {\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n        // 3 bytes are pushed for every range and there are 3 header bytes.\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = (numRanges >> 8) & 0xff;\n        ranges[2] = numRanges & 0xff;\n        // sentinel\n        ranges.push((i >> 8) & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileTypedArray(data) {\n    var out = [];\n    for (var i = 0, ii = data.length; i < ii; ++i) {\n      out[i] = data[i];\n    }\n    return out;\n  }\n\n  compileIndex(index, trackers = []) {\n    var objects = index.objects;\n    // First 2 bytes contains the number of objects contained into this index\n    var count = objects.length;\n\n    // If there is no object, just create an index. This technically\n    // should just be [0, 0] but OTS has an issue with that.\n    if (count === 0) {\n      return [0, 0, 0];\n    }\n\n    var data = [(count >> 8) & 0xff, count & 0xff];\n\n    var lastOffset = 1,\n      i;\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n\n    var offsetSize;\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n\n    // Next byte contains the offset size use to reference object in the file\n    data.push(offsetSize);\n\n    // Add another offset after this one because we need a new offset\n    var relativeOffset = 1;\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      } else {\n        data.push(\n          (relativeOffset >>> 24) & 0xff,\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      }\n\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n\n    for (i = 0; i < count; i++) {\n      // Notify the tracker where the object will be offset in the data.\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n      for (var j = 0, jj = objects[i].length; j < jj; j++) {\n        data.push(objects[i][j]);\n      }\n    }\n    return data;\n  }\n}\n\nexport {\n  CFFStandardStrings,\n  CFFParser,\n  CFF,\n  CFFHeader,\n  CFFStrings,\n  CFFIndex,\n  CFFCharset,\n  CFFTopDict,\n  CFFPrivateDict,\n  CFFCompiler,\n  CFFFDSelect,\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/* eslint no-var: error */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset };\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// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  WinAnsiEncoding,\n  StandardEncoding,\n  MacRomanEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n  ExpertEncoding,\n  getEncoding,\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/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.A = 0x0041;\n  t.AE = 0x00c6;\n  t.AEacute = 0x01fc;\n  t.AEmacron = 0x01e2;\n  t.AEsmall = 0xf7e6;\n  t.Aacute = 0x00c1;\n  t.Aacutesmall = 0xf7e1;\n  t.Abreve = 0x0102;\n  t.Abreveacute = 0x1eae;\n  t.Abrevecyrillic = 0x04d0;\n  t.Abrevedotbelow = 0x1eb6;\n  t.Abrevegrave = 0x1eb0;\n  t.Abrevehookabove = 0x1eb2;\n  t.Abrevetilde = 0x1eb4;\n  t.Acaron = 0x01cd;\n  t.Acircle = 0x24b6;\n  t.Acircumflex = 0x00c2;\n  t.Acircumflexacute = 0x1ea4;\n  t.Acircumflexdotbelow = 0x1eac;\n  t.Acircumflexgrave = 0x1ea6;\n  t.Acircumflexhookabove = 0x1ea8;\n  t.Acircumflexsmall = 0xf7e2;\n  t.Acircumflextilde = 0x1eaa;\n  t.Acute = 0xf6c9;\n  t.Acutesmall = 0xf7b4;\n  t.Acyrillic = 0x0410;\n  t.Adblgrave = 0x0200;\n  t.Adieresis = 0x00c4;\n  t.Adieresiscyrillic = 0x04d2;\n  t.Adieresismacron = 0x01de;\n  t.Adieresissmall = 0xf7e4;\n  t.Adotbelow = 0x1ea0;\n  t.Adotmacron = 0x01e0;\n  t.Agrave = 0x00c0;\n  t.Agravesmall = 0xf7e0;\n  t.Ahookabove = 0x1ea2;\n  t.Aiecyrillic = 0x04d4;\n  t.Ainvertedbreve = 0x0202;\n  t.Alpha = 0x0391;\n  t.Alphatonos = 0x0386;\n  t.Amacron = 0x0100;\n  t.Amonospace = 0xff21;\n  t.Aogonek = 0x0104;\n  t.Aring = 0x00c5;\n  t.Aringacute = 0x01fa;\n  t.Aringbelow = 0x1e00;\n  t.Aringsmall = 0xf7e5;\n  t.Asmall = 0xf761;\n  t.Atilde = 0x00c3;\n  t.Atildesmall = 0xf7e3;\n  t.Aybarmenian = 0x0531;\n  t.B = 0x0042;\n  t.Bcircle = 0x24b7;\n  t.Bdotaccent = 0x1e02;\n  t.Bdotbelow = 0x1e04;\n  t.Becyrillic = 0x0411;\n  t.Benarmenian = 0x0532;\n  t.Beta = 0x0392;\n  t.Bhook = 0x0181;\n  t.Blinebelow = 0x1e06;\n  t.Bmonospace = 0xff22;\n  t.Brevesmall = 0xf6f4;\n  t.Bsmall = 0xf762;\n  t.Btopbar = 0x0182;\n  t.C = 0x0043;\n  t.Caarmenian = 0x053e;\n  t.Cacute = 0x0106;\n  t.Caron = 0xf6ca;\n  t.Caronsmall = 0xf6f5;\n  t.Ccaron = 0x010c;\n  t.Ccedilla = 0x00c7;\n  t.Ccedillaacute = 0x1e08;\n  t.Ccedillasmall = 0xf7e7;\n  t.Ccircle = 0x24b8;\n  t.Ccircumflex = 0x0108;\n  t.Cdot = 0x010a;\n  t.Cdotaccent = 0x010a;\n  t.Cedillasmall = 0xf7b8;\n  t.Chaarmenian = 0x0549;\n  t.Cheabkhasiancyrillic = 0x04bc;\n  t.Checyrillic = 0x0427;\n  t.Chedescenderabkhasiancyrillic = 0x04be;\n  t.Chedescendercyrillic = 0x04b6;\n  t.Chedieresiscyrillic = 0x04f4;\n  t.Cheharmenian = 0x0543;\n  t.Chekhakassiancyrillic = 0x04cb;\n  t.Cheverticalstrokecyrillic = 0x04b8;\n  t.Chi = 0x03a7;\n  t.Chook = 0x0187;\n  t.Circumflexsmall = 0xf6f6;\n  t.Cmonospace = 0xff23;\n  t.Coarmenian = 0x0551;\n  t.Csmall = 0xf763;\n  t.D = 0x0044;\n  t.DZ = 0x01f1;\n  t.DZcaron = 0x01c4;\n  t.Daarmenian = 0x0534;\n  t.Dafrican = 0x0189;\n  t.Dcaron = 0x010e;\n  t.Dcedilla = 0x1e10;\n  t.Dcircle = 0x24b9;\n  t.Dcircumflexbelow = 0x1e12;\n  t.Dcroat = 0x0110;\n  t.Ddotaccent = 0x1e0a;\n  t.Ddotbelow = 0x1e0c;\n  t.Decyrillic = 0x0414;\n  t.Deicoptic = 0x03ee;\n  t.Delta = 0x2206;\n  t.Deltagreek = 0x0394;\n  t.Dhook = 0x018a;\n  t.Dieresis = 0xf6cb;\n  t.DieresisAcute = 0xf6cc;\n  t.DieresisGrave = 0xf6cd;\n  t.Dieresissmall = 0xf7a8;\n  t.Digammagreek = 0x03dc;\n  t.Djecyrillic = 0x0402;\n  t.Dlinebelow = 0x1e0e;\n  t.Dmonospace = 0xff24;\n  t.Dotaccentsmall = 0xf6f7;\n  t.Dslash = 0x0110;\n  t.Dsmall = 0xf764;\n  t.Dtopbar = 0x018b;\n  t.Dz = 0x01f2;\n  t.Dzcaron = 0x01c5;\n  t.Dzeabkhasiancyrillic = 0x04e0;\n  t.Dzecyrillic = 0x0405;\n  t.Dzhecyrillic = 0x040f;\n  t.E = 0x0045;\n  t.Eacute = 0x00c9;\n  t.Eacutesmall = 0xf7e9;\n  t.Ebreve = 0x0114;\n  t.Ecaron = 0x011a;\n  t.Ecedillabreve = 0x1e1c;\n  t.Echarmenian = 0x0535;\n  t.Ecircle = 0x24ba;\n  t.Ecircumflex = 0x00ca;\n  t.Ecircumflexacute = 0x1ebe;\n  t.Ecircumflexbelow = 0x1e18;\n  t.Ecircumflexdotbelow = 0x1ec6;\n  t.Ecircumflexgrave = 0x1ec0;\n  t.Ecircumflexhookabove = 0x1ec2;\n  t.Ecircumflexsmall = 0xf7ea;\n  t.Ecircumflextilde = 0x1ec4;\n  t.Ecyrillic = 0x0404;\n  t.Edblgrave = 0x0204;\n  t.Edieresis = 0x00cb;\n  t.Edieresissmall = 0xf7eb;\n  t.Edot = 0x0116;\n  t.Edotaccent = 0x0116;\n  t.Edotbelow = 0x1eb8;\n  t.Efcyrillic = 0x0424;\n  t.Egrave = 0x00c8;\n  t.Egravesmall = 0xf7e8;\n  t.Eharmenian = 0x0537;\n  t.Ehookabove = 0x1eba;\n  t.Eightroman = 0x2167;\n  t.Einvertedbreve = 0x0206;\n  t.Eiotifiedcyrillic = 0x0464;\n  t.Elcyrillic = 0x041b;\n  t.Elevenroman = 0x216a;\n  t.Emacron = 0x0112;\n  t.Emacronacute = 0x1e16;\n  t.Emacrongrave = 0x1e14;\n  t.Emcyrillic = 0x041c;\n  t.Emonospace = 0xff25;\n  t.Encyrillic = 0x041d;\n  t.Endescendercyrillic = 0x04a2;\n  t.Eng = 0x014a;\n  t.Enghecyrillic = 0x04a4;\n  t.Enhookcyrillic = 0x04c7;\n  t.Eogonek = 0x0118;\n  t.Eopen = 0x0190;\n  t.Epsilon = 0x0395;\n  t.Epsilontonos = 0x0388;\n  t.Ercyrillic = 0x0420;\n  t.Ereversed = 0x018e;\n  t.Ereversedcyrillic = 0x042d;\n  t.Escyrillic = 0x0421;\n  t.Esdescendercyrillic = 0x04aa;\n  t.Esh = 0x01a9;\n  t.Esmall = 0xf765;\n  t.Eta = 0x0397;\n  t.Etarmenian = 0x0538;\n  t.Etatonos = 0x0389;\n  t.Eth = 0x00d0;\n  t.Ethsmall = 0xf7f0;\n  t.Etilde = 0x1ebc;\n  t.Etildebelow = 0x1e1a;\n  t.Euro = 0x20ac;\n  t.Ezh = 0x01b7;\n  t.Ezhcaron = 0x01ee;\n  t.Ezhreversed = 0x01b8;\n  t.F = 0x0046;\n  t.Fcircle = 0x24bb;\n  t.Fdotaccent = 0x1e1e;\n  t.Feharmenian = 0x0556;\n  t.Feicoptic = 0x03e4;\n  t.Fhook = 0x0191;\n  t.Fitacyrillic = 0x0472;\n  t.Fiveroman = 0x2164;\n  t.Fmonospace = 0xff26;\n  t.Fourroman = 0x2163;\n  t.Fsmall = 0xf766;\n  t.G = 0x0047;\n  t.GBsquare = 0x3387;\n  t.Gacute = 0x01f4;\n  t.Gamma = 0x0393;\n  t.Gammaafrican = 0x0194;\n  t.Gangiacoptic = 0x03ea;\n  t.Gbreve = 0x011e;\n  t.Gcaron = 0x01e6;\n  t.Gcedilla = 0x0122;\n  t.Gcircle = 0x24bc;\n  t.Gcircumflex = 0x011c;\n  t.Gcommaaccent = 0x0122;\n  t.Gdot = 0x0120;\n  t.Gdotaccent = 0x0120;\n  t.Gecyrillic = 0x0413;\n  t.Ghadarmenian = 0x0542;\n  t.Ghemiddlehookcyrillic = 0x0494;\n  t.Ghestrokecyrillic = 0x0492;\n  t.Gheupturncyrillic = 0x0490;\n  t.Ghook = 0x0193;\n  t.Gimarmenian = 0x0533;\n  t.Gjecyrillic = 0x0403;\n  t.Gmacron = 0x1e20;\n  t.Gmonospace = 0xff27;\n  t.Grave = 0xf6ce;\n  t.Gravesmall = 0xf760;\n  t.Gsmall = 0xf767;\n  t.Gsmallhook = 0x029b;\n  t.Gstroke = 0x01e4;\n  t.H = 0x0048;\n  t.H18533 = 0x25cf;\n  t.H18543 = 0x25aa;\n  t.H18551 = 0x25ab;\n  t.H22073 = 0x25a1;\n  t.HPsquare = 0x33cb;\n  t.Haabkhasiancyrillic = 0x04a8;\n  t.Hadescendercyrillic = 0x04b2;\n  t.Hardsigncyrillic = 0x042a;\n  t.Hbar = 0x0126;\n  t.Hbrevebelow = 0x1e2a;\n  t.Hcedilla = 0x1e28;\n  t.Hcircle = 0x24bd;\n  t.Hcircumflex = 0x0124;\n  t.Hdieresis = 0x1e26;\n  t.Hdotaccent = 0x1e22;\n  t.Hdotbelow = 0x1e24;\n  t.Hmonospace = 0xff28;\n  t.Hoarmenian = 0x0540;\n  t.Horicoptic = 0x03e8;\n  t.Hsmall = 0xf768;\n  t.Hungarumlaut = 0xf6cf;\n  t.Hungarumlautsmall = 0xf6f8;\n  t.Hzsquare = 0x3390;\n  t.I = 0x0049;\n  t.IAcyrillic = 0x042f;\n  t.IJ = 0x0132;\n  t.IUcyrillic = 0x042e;\n  t.Iacute = 0x00cd;\n  t.Iacutesmall = 0xf7ed;\n  t.Ibreve = 0x012c;\n  t.Icaron = 0x01cf;\n  t.Icircle = 0x24be;\n  t.Icircumflex = 0x00ce;\n  t.Icircumflexsmall = 0xf7ee;\n  t.Icyrillic = 0x0406;\n  t.Idblgrave = 0x0208;\n  t.Idieresis = 0x00cf;\n  t.Idieresisacute = 0x1e2e;\n  t.Idieresiscyrillic = 0x04e4;\n  t.Idieresissmall = 0xf7ef;\n  t.Idot = 0x0130;\n  t.Idotaccent = 0x0130;\n  t.Idotbelow = 0x1eca;\n  t.Iebrevecyrillic = 0x04d6;\n  t.Iecyrillic = 0x0415;\n  t.Ifraktur = 0x2111;\n  t.Igrave = 0x00cc;\n  t.Igravesmall = 0xf7ec;\n  t.Ihookabove = 0x1ec8;\n  t.Iicyrillic = 0x0418;\n  t.Iinvertedbreve = 0x020a;\n  t.Iishortcyrillic = 0x0419;\n  t.Imacron = 0x012a;\n  t.Imacroncyrillic = 0x04e2;\n  t.Imonospace = 0xff29;\n  t.Iniarmenian = 0x053b;\n  t.Iocyrillic = 0x0401;\n  t.Iogonek = 0x012e;\n  t.Iota = 0x0399;\n  t.Iotaafrican = 0x0196;\n  t.Iotadieresis = 0x03aa;\n  t.Iotatonos = 0x038a;\n  t.Ismall = 0xf769;\n  t.Istroke = 0x0197;\n  t.Itilde = 0x0128;\n  t.Itildebelow = 0x1e2c;\n  t.Izhitsacyrillic = 0x0474;\n  t.Izhitsadblgravecyrillic = 0x0476;\n  t.J = 0x004a;\n  t.Jaarmenian = 0x0541;\n  t.Jcircle = 0x24bf;\n  t.Jcircumflex = 0x0134;\n  t.Jecyrillic = 0x0408;\n  t.Jheharmenian = 0x054b;\n  t.Jmonospace = 0xff2a;\n  t.Jsmall = 0xf76a;\n  t.K = 0x004b;\n  t.KBsquare = 0x3385;\n  t.KKsquare = 0x33cd;\n  t.Kabashkircyrillic = 0x04a0;\n  t.Kacute = 0x1e30;\n  t.Kacyrillic = 0x041a;\n  t.Kadescendercyrillic = 0x049a;\n  t.Kahookcyrillic = 0x04c3;\n  t.Kappa = 0x039a;\n  t.Kastrokecyrillic = 0x049e;\n  t.Kaverticalstrokecyrillic = 0x049c;\n  t.Kcaron = 0x01e8;\n  t.Kcedilla = 0x0136;\n  t.Kcircle = 0x24c0;\n  t.Kcommaaccent = 0x0136;\n  t.Kdotbelow = 0x1e32;\n  t.Keharmenian = 0x0554;\n  t.Kenarmenian = 0x053f;\n  t.Khacyrillic = 0x0425;\n  t.Kheicoptic = 0x03e6;\n  t.Khook = 0x0198;\n  t.Kjecyrillic = 0x040c;\n  t.Klinebelow = 0x1e34;\n  t.Kmonospace = 0xff2b;\n  t.Koppacyrillic = 0x0480;\n  t.Koppagreek = 0x03de;\n  t.Ksicyrillic = 0x046e;\n  t.Ksmall = 0xf76b;\n  t.L = 0x004c;\n  t.LJ = 0x01c7;\n  t.LL = 0xf6bf;\n  t.Lacute = 0x0139;\n  t.Lambda = 0x039b;\n  t.Lcaron = 0x013d;\n  t.Lcedilla = 0x013b;\n  t.Lcircle = 0x24c1;\n  t.Lcircumflexbelow = 0x1e3c;\n  t.Lcommaaccent = 0x013b;\n  t.Ldot = 0x013f;\n  t.Ldotaccent = 0x013f;\n  t.Ldotbelow = 0x1e36;\n  t.Ldotbelowmacron = 0x1e38;\n  t.Liwnarmenian = 0x053c;\n  t.Lj = 0x01c8;\n  t.Ljecyrillic = 0x0409;\n  t.Llinebelow = 0x1e3a;\n  t.Lmonospace = 0xff2c;\n  t.Lslash = 0x0141;\n  t.Lslashsmall = 0xf6f9;\n  t.Lsmall = 0xf76c;\n  t.M = 0x004d;\n  t.MBsquare = 0x3386;\n  t.Macron = 0xf6d0;\n  t.Macronsmall = 0xf7af;\n  t.Macute = 0x1e3e;\n  t.Mcircle = 0x24c2;\n  t.Mdotaccent = 0x1e40;\n  t.Mdotbelow = 0x1e42;\n  t.Menarmenian = 0x0544;\n  t.Mmonospace = 0xff2d;\n  t.Msmall = 0xf76d;\n  t.Mturned = 0x019c;\n  t.Mu = 0x039c;\n  t.N = 0x004e;\n  t.NJ = 0x01ca;\n  t.Nacute = 0x0143;\n  t.Ncaron = 0x0147;\n  t.Ncedilla = 0x0145;\n  t.Ncircle = 0x24c3;\n  t.Ncircumflexbelow = 0x1e4a;\n  t.Ncommaaccent = 0x0145;\n  t.Ndotaccent = 0x1e44;\n  t.Ndotbelow = 0x1e46;\n  t.Nhookleft = 0x019d;\n  t.Nineroman = 0x2168;\n  t.Nj = 0x01cb;\n  t.Njecyrillic = 0x040a;\n  t.Nlinebelow = 0x1e48;\n  t.Nmonospace = 0xff2e;\n  t.Nowarmenian = 0x0546;\n  t.Nsmall = 0xf76e;\n  t.Ntilde = 0x00d1;\n  t.Ntildesmall = 0xf7f1;\n  t.Nu = 0x039d;\n  t.O = 0x004f;\n  t.OE = 0x0152;\n  t.OEsmall = 0xf6fa;\n  t.Oacute = 0x00d3;\n  t.Oacutesmall = 0xf7f3;\n  t.Obarredcyrillic = 0x04e8;\n  t.Obarreddieresiscyrillic = 0x04ea;\n  t.Obreve = 0x014e;\n  t.Ocaron = 0x01d1;\n  t.Ocenteredtilde = 0x019f;\n  t.Ocircle = 0x24c4;\n  t.Ocircumflex = 0x00d4;\n  t.Ocircumflexacute = 0x1ed0;\n  t.Ocircumflexdotbelow = 0x1ed8;\n  t.Ocircumflexgrave = 0x1ed2;\n  t.Ocircumflexhookabove = 0x1ed4;\n  t.Ocircumflexsmall = 0xf7f4;\n  t.Ocircumflextilde = 0x1ed6;\n  t.Ocyrillic = 0x041e;\n  t.Odblacute = 0x0150;\n  t.Odblgrave = 0x020c;\n  t.Odieresis = 0x00d6;\n  t.Odieresiscyrillic = 0x04e6;\n  t.Odieresissmall = 0xf7f6;\n  t.Odotbelow = 0x1ecc;\n  t.Ogoneksmall = 0xf6fb;\n  t.Ograve = 0x00d2;\n  t.Ogravesmall = 0xf7f2;\n  t.Oharmenian = 0x0555;\n  t.Ohm = 0x2126;\n  t.Ohookabove = 0x1ece;\n  t.Ohorn = 0x01a0;\n  t.Ohornacute = 0x1eda;\n  t.Ohorndotbelow = 0x1ee2;\n  t.Ohorngrave = 0x1edc;\n  t.Ohornhookabove = 0x1ede;\n  t.Ohorntilde = 0x1ee0;\n  t.Ohungarumlaut = 0x0150;\n  t.Oi = 0x01a2;\n  t.Oinvertedbreve = 0x020e;\n  t.Omacron = 0x014c;\n  t.Omacronacute = 0x1e52;\n  t.Omacrongrave = 0x1e50;\n  t.Omega = 0x2126;\n  t.Omegacyrillic = 0x0460;\n  t.Omegagreek = 0x03a9;\n  t.Omegaroundcyrillic = 0x047a;\n  t.Omegatitlocyrillic = 0x047c;\n  t.Omegatonos = 0x038f;\n  t.Omicron = 0x039f;\n  t.Omicrontonos = 0x038c;\n  t.Omonospace = 0xff2f;\n  t.Oneroman = 0x2160;\n  t.Oogonek = 0x01ea;\n  t.Oogonekmacron = 0x01ec;\n  t.Oopen = 0x0186;\n  t.Oslash = 0x00d8;\n  t.Oslashacute = 0x01fe;\n  t.Oslashsmall = 0xf7f8;\n  t.Osmall = 0xf76f;\n  t.Ostrokeacute = 0x01fe;\n  t.Otcyrillic = 0x047e;\n  t.Otilde = 0x00d5;\n  t.Otildeacute = 0x1e4c;\n  t.Otildedieresis = 0x1e4e;\n  t.Otildesmall = 0xf7f5;\n  t.P = 0x0050;\n  t.Pacute = 0x1e54;\n  t.Pcircle = 0x24c5;\n  t.Pdotaccent = 0x1e56;\n  t.Pecyrillic = 0x041f;\n  t.Peharmenian = 0x054a;\n  t.Pemiddlehookcyrillic = 0x04a6;\n  t.Phi = 0x03a6;\n  t.Phook = 0x01a4;\n  t.Pi = 0x03a0;\n  t.Piwrarmenian = 0x0553;\n  t.Pmonospace = 0xff30;\n  t.Psi = 0x03a8;\n  t.Psicyrillic = 0x0470;\n  t.Psmall = 0xf770;\n  t.Q = 0x0051;\n  t.Qcircle = 0x24c6;\n  t.Qmonospace = 0xff31;\n  t.Qsmall = 0xf771;\n  t.R = 0x0052;\n  t.Raarmenian = 0x054c;\n  t.Racute = 0x0154;\n  t.Rcaron = 0x0158;\n  t.Rcedilla = 0x0156;\n  t.Rcircle = 0x24c7;\n  t.Rcommaaccent = 0x0156;\n  t.Rdblgrave = 0x0210;\n  t.Rdotaccent = 0x1e58;\n  t.Rdotbelow = 0x1e5a;\n  t.Rdotbelowmacron = 0x1e5c;\n  t.Reharmenian = 0x0550;\n  t.Rfraktur = 0x211c;\n  t.Rho = 0x03a1;\n  t.Ringsmall = 0xf6fc;\n  t.Rinvertedbreve = 0x0212;\n  t.Rlinebelow = 0x1e5e;\n  t.Rmonospace = 0xff32;\n  t.Rsmall = 0xf772;\n  t.Rsmallinverted = 0x0281;\n  t.Rsmallinvertedsuperior = 0x02b6;\n  t.S = 0x0053;\n  t.SF010000 = 0x250c;\n  t.SF020000 = 0x2514;\n  t.SF030000 = 0x2510;\n  t.SF040000 = 0x2518;\n  t.SF050000 = 0x253c;\n  t.SF060000 = 0x252c;\n  t.SF070000 = 0x2534;\n  t.SF080000 = 0x251c;\n  t.SF090000 = 0x2524;\n  t.SF100000 = 0x2500;\n  t.SF110000 = 0x2502;\n  t.SF190000 = 0x2561;\n  t.SF200000 = 0x2562;\n  t.SF210000 = 0x2556;\n  t.SF220000 = 0x2555;\n  t.SF230000 = 0x2563;\n  t.SF240000 = 0x2551;\n  t.SF250000 = 0x2557;\n  t.SF260000 = 0x255d;\n  t.SF270000 = 0x255c;\n  t.SF280000 = 0x255b;\n  t.SF360000 = 0x255e;\n  t.SF370000 = 0x255f;\n  t.SF380000 = 0x255a;\n  t.SF390000 = 0x2554;\n  t.SF400000 = 0x2569;\n  t.SF410000 = 0x2566;\n  t.SF420000 = 0x2560;\n  t.SF430000 = 0x2550;\n  t.SF440000 = 0x256c;\n  t.SF450000 = 0x2567;\n  t.SF460000 = 0x2568;\n  t.SF470000 = 0x2564;\n  t.SF480000 = 0x2565;\n  t.SF490000 = 0x2559;\n  t.SF500000 = 0x2558;\n  t.SF510000 = 0x2552;\n  t.SF520000 = 0x2553;\n  t.SF530000 = 0x256b;\n  t.SF540000 = 0x256a;\n  t.Sacute = 0x015a;\n  t.Sacutedotaccent = 0x1e64;\n  t.Sampigreek = 0x03e0;\n  t.Scaron = 0x0160;\n  t.Scarondotaccent = 0x1e66;\n  t.Scaronsmall = 0xf6fd;\n  t.Scedilla = 0x015e;\n  t.Schwa = 0x018f;\n  t.Schwacyrillic = 0x04d8;\n  t.Schwadieresiscyrillic = 0x04da;\n  t.Scircle = 0x24c8;\n  t.Scircumflex = 0x015c;\n  t.Scommaaccent = 0x0218;\n  t.Sdotaccent = 0x1e60;\n  t.Sdotbelow = 0x1e62;\n  t.Sdotbelowdotaccent = 0x1e68;\n  t.Seharmenian = 0x054d;\n  t.Sevenroman = 0x2166;\n  t.Shaarmenian = 0x0547;\n  t.Shacyrillic = 0x0428;\n  t.Shchacyrillic = 0x0429;\n  t.Sheicoptic = 0x03e2;\n  t.Shhacyrillic = 0x04ba;\n  t.Shimacoptic = 0x03ec;\n  t.Sigma = 0x03a3;\n  t.Sixroman = 0x2165;\n  t.Smonospace = 0xff33;\n  t.Softsigncyrillic = 0x042c;\n  t.Ssmall = 0xf773;\n  t.Stigmagreek = 0x03da;\n  t.T = 0x0054;\n  t.Tau = 0x03a4;\n  t.Tbar = 0x0166;\n  t.Tcaron = 0x0164;\n  t.Tcedilla = 0x0162;\n  t.Tcircle = 0x24c9;\n  t.Tcircumflexbelow = 0x1e70;\n  t.Tcommaaccent = 0x0162;\n  t.Tdotaccent = 0x1e6a;\n  t.Tdotbelow = 0x1e6c;\n  t.Tecyrillic = 0x0422;\n  t.Tedescendercyrillic = 0x04ac;\n  t.Tenroman = 0x2169;\n  t.Tetsecyrillic = 0x04b4;\n  t.Theta = 0x0398;\n  t.Thook = 0x01ac;\n  t.Thorn = 0x00de;\n  t.Thornsmall = 0xf7fe;\n  t.Threeroman = 0x2162;\n  t.Tildesmall = 0xf6fe;\n  t.Tiwnarmenian = 0x054f;\n  t.Tlinebelow = 0x1e6e;\n  t.Tmonospace = 0xff34;\n  t.Toarmenian = 0x0539;\n  t.Tonefive = 0x01bc;\n  t.Tonesix = 0x0184;\n  t.Tonetwo = 0x01a7;\n  t.Tretroflexhook = 0x01ae;\n  t.Tsecyrillic = 0x0426;\n  t.Tshecyrillic = 0x040b;\n  t.Tsmall = 0xf774;\n  t.Twelveroman = 0x216b;\n  t.Tworoman = 0x2161;\n  t.U = 0x0055;\n  t.Uacute = 0x00da;\n  t.Uacutesmall = 0xf7fa;\n  t.Ubreve = 0x016c;\n  t.Ucaron = 0x01d3;\n  t.Ucircle = 0x24ca;\n  t.Ucircumflex = 0x00db;\n  t.Ucircumflexbelow = 0x1e76;\n  t.Ucircumflexsmall = 0xf7fb;\n  t.Ucyrillic = 0x0423;\n  t.Udblacute = 0x0170;\n  t.Udblgrave = 0x0214;\n  t.Udieresis = 0x00dc;\n  t.Udieresisacute = 0x01d7;\n  t.Udieresisbelow = 0x1e72;\n  t.Udieresiscaron = 0x01d9;\n  t.Udieresiscyrillic = 0x04f0;\n  t.Udieresisgrave = 0x01db;\n  t.Udieresismacron = 0x01d5;\n  t.Udieresissmall = 0xf7fc;\n  t.Udotbelow = 0x1ee4;\n  t.Ugrave = 0x00d9;\n  t.Ugravesmall = 0xf7f9;\n  t.Uhookabove = 0x1ee6;\n  t.Uhorn = 0x01af;\n  t.Uhornacute = 0x1ee8;\n  t.Uhorndotbelow = 0x1ef0;\n  t.Uhorngrave = 0x1eea;\n  t.Uhornhookabove = 0x1eec;\n  t.Uhorntilde = 0x1eee;\n  t.Uhungarumlaut = 0x0170;\n  t.Uhungarumlautcyrillic = 0x04f2;\n  t.Uinvertedbreve = 0x0216;\n  t.Ukcyrillic = 0x0478;\n  t.Umacron = 0x016a;\n  t.Umacroncyrillic = 0x04ee;\n  t.Umacrondieresis = 0x1e7a;\n  t.Umonospace = 0xff35;\n  t.Uogonek = 0x0172;\n  t.Upsilon = 0x03a5;\n  t.Upsilon1 = 0x03d2;\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\n  t.Upsilonafrican = 0x01b1;\n  t.Upsilondieresis = 0x03ab;\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\n  t.Upsilonhooksymbol = 0x03d2;\n  t.Upsilontonos = 0x038e;\n  t.Uring = 0x016e;\n  t.Ushortcyrillic = 0x040e;\n  t.Usmall = 0xf775;\n  t.Ustraightcyrillic = 0x04ae;\n  t.Ustraightstrokecyrillic = 0x04b0;\n  t.Utilde = 0x0168;\n  t.Utildeacute = 0x1e78;\n  t.Utildebelow = 0x1e74;\n  t.V = 0x0056;\n  t.Vcircle = 0x24cb;\n  t.Vdotbelow = 0x1e7e;\n  t.Vecyrillic = 0x0412;\n  t.Vewarmenian = 0x054e;\n  t.Vhook = 0x01b2;\n  t.Vmonospace = 0xff36;\n  t.Voarmenian = 0x0548;\n  t.Vsmall = 0xf776;\n  t.Vtilde = 0x1e7c;\n  t.W = 0x0057;\n  t.Wacute = 0x1e82;\n  t.Wcircle = 0x24cc;\n  t.Wcircumflex = 0x0174;\n  t.Wdieresis = 0x1e84;\n  t.Wdotaccent = 0x1e86;\n  t.Wdotbelow = 0x1e88;\n  t.Wgrave = 0x1e80;\n  t.Wmonospace = 0xff37;\n  t.Wsmall = 0xf777;\n  t.X = 0x0058;\n  t.Xcircle = 0x24cd;\n  t.Xdieresis = 0x1e8c;\n  t.Xdotaccent = 0x1e8a;\n  t.Xeharmenian = 0x053d;\n  t.Xi = 0x039e;\n  t.Xmonospace = 0xff38;\n  t.Xsmall = 0xf778;\n  t.Y = 0x0059;\n  t.Yacute = 0x00dd;\n  t.Yacutesmall = 0xf7fd;\n  t.Yatcyrillic = 0x0462;\n  t.Ycircle = 0x24ce;\n  t.Ycircumflex = 0x0176;\n  t.Ydieresis = 0x0178;\n  t.Ydieresissmall = 0xf7ff;\n  t.Ydotaccent = 0x1e8e;\n  t.Ydotbelow = 0x1ef4;\n  t.Yericyrillic = 0x042b;\n  t.Yerudieresiscyrillic = 0x04f8;\n  t.Ygrave = 0x1ef2;\n  t.Yhook = 0x01b3;\n  t.Yhookabove = 0x1ef6;\n  t.Yiarmenian = 0x0545;\n  t.Yicyrillic = 0x0407;\n  t.Yiwnarmenian = 0x0552;\n  t.Ymonospace = 0xff39;\n  t.Ysmall = 0xf779;\n  t.Ytilde = 0x1ef8;\n  t.Yusbigcyrillic = 0x046a;\n  t.Yusbigiotifiedcyrillic = 0x046c;\n  t.Yuslittlecyrillic = 0x0466;\n  t.Yuslittleiotifiedcyrillic = 0x0468;\n  t.Z = 0x005a;\n  t.Zaarmenian = 0x0536;\n  t.Zacute = 0x0179;\n  t.Zcaron = 0x017d;\n  t.Zcaronsmall = 0xf6ff;\n  t.Zcircle = 0x24cf;\n  t.Zcircumflex = 0x1e90;\n  t.Zdot = 0x017b;\n  t.Zdotaccent = 0x017b;\n  t.Zdotbelow = 0x1e92;\n  t.Zecyrillic = 0x0417;\n  t.Zedescendercyrillic = 0x0498;\n  t.Zedieresiscyrillic = 0x04de;\n  t.Zeta = 0x0396;\n  t.Zhearmenian = 0x053a;\n  t.Zhebrevecyrillic = 0x04c1;\n  t.Zhecyrillic = 0x0416;\n  t.Zhedescendercyrillic = 0x0496;\n  t.Zhedieresiscyrillic = 0x04dc;\n  t.Zlinebelow = 0x1e94;\n  t.Zmonospace = 0xff3a;\n  t.Zsmall = 0xf77a;\n  t.Zstroke = 0x01b5;\n  t.a = 0x0061;\n  t.aabengali = 0x0986;\n  t.aacute = 0x00e1;\n  t.aadeva = 0x0906;\n  t.aagujarati = 0x0a86;\n  t.aagurmukhi = 0x0a06;\n  t.aamatragurmukhi = 0x0a3e;\n  t.aarusquare = 0x3303;\n  t.aavowelsignbengali = 0x09be;\n  t.aavowelsigndeva = 0x093e;\n  t.aavowelsigngujarati = 0x0abe;\n  t.abbreviationmarkarmenian = 0x055f;\n  t.abbreviationsigndeva = 0x0970;\n  t.abengali = 0x0985;\n  t.abopomofo = 0x311a;\n  t.abreve = 0x0103;\n  t.abreveacute = 0x1eaf;\n  t.abrevecyrillic = 0x04d1;\n  t.abrevedotbelow = 0x1eb7;\n  t.abrevegrave = 0x1eb1;\n  t.abrevehookabove = 0x1eb3;\n  t.abrevetilde = 0x1eb5;\n  t.acaron = 0x01ce;\n  t.acircle = 0x24d0;\n  t.acircumflex = 0x00e2;\n  t.acircumflexacute = 0x1ea5;\n  t.acircumflexdotbelow = 0x1ead;\n  t.acircumflexgrave = 0x1ea7;\n  t.acircumflexhookabove = 0x1ea9;\n  t.acircumflextilde = 0x1eab;\n  t.acute = 0x00b4;\n  t.acutebelowcmb = 0x0317;\n  t.acutecmb = 0x0301;\n  t.acutecomb = 0x0301;\n  t.acutedeva = 0x0954;\n  t.acutelowmod = 0x02cf;\n  t.acutetonecmb = 0x0341;\n  t.acyrillic = 0x0430;\n  t.adblgrave = 0x0201;\n  t.addakgurmukhi = 0x0a71;\n  t.adeva = 0x0905;\n  t.adieresis = 0x00e4;\n  t.adieresiscyrillic = 0x04d3;\n  t.adieresismacron = 0x01df;\n  t.adotbelow = 0x1ea1;\n  t.adotmacron = 0x01e1;\n  t.ae = 0x00e6;\n  t.aeacute = 0x01fd;\n  t.aekorean = 0x3150;\n  t.aemacron = 0x01e3;\n  t.afii00208 = 0x2015;\n  t.afii08941 = 0x20a4;\n  t.afii10017 = 0x0410;\n  t.afii10018 = 0x0411;\n  t.afii10019 = 0x0412;\n  t.afii10020 = 0x0413;\n  t.afii10021 = 0x0414;\n  t.afii10022 = 0x0415;\n  t.afii10023 = 0x0401;\n  t.afii10024 = 0x0416;\n  t.afii10025 = 0x0417;\n  t.afii10026 = 0x0418;\n  t.afii10027 = 0x0419;\n  t.afii10028 = 0x041a;\n  t.afii10029 = 0x041b;\n  t.afii10030 = 0x041c;\n  t.afii10031 = 0x041d;\n  t.afii10032 = 0x041e;\n  t.afii10033 = 0x041f;\n  t.afii10034 = 0x0420;\n  t.afii10035 = 0x0421;\n  t.afii10036 = 0x0422;\n  t.afii10037 = 0x0423;\n  t.afii10038 = 0x0424;\n  t.afii10039 = 0x0425;\n  t.afii10040 = 0x0426;\n  t.afii10041 = 0x0427;\n  t.afii10042 = 0x0428;\n  t.afii10043 = 0x0429;\n  t.afii10044 = 0x042a;\n  t.afii10045 = 0x042b;\n  t.afii10046 = 0x042c;\n  t.afii10047 = 0x042d;\n  t.afii10048 = 0x042e;\n  t.afii10049 = 0x042f;\n  t.afii10050 = 0x0490;\n  t.afii10051 = 0x0402;\n  t.afii10052 = 0x0403;\n  t.afii10053 = 0x0404;\n  t.afii10054 = 0x0405;\n  t.afii10055 = 0x0406;\n  t.afii10056 = 0x0407;\n  t.afii10057 = 0x0408;\n  t.afii10058 = 0x0409;\n  t.afii10059 = 0x040a;\n  t.afii10060 = 0x040b;\n  t.afii10061 = 0x040c;\n  t.afii10062 = 0x040e;\n  t.afii10063 = 0xf6c4;\n  t.afii10064 = 0xf6c5;\n  t.afii10065 = 0x0430;\n  t.afii10066 = 0x0431;\n  t.afii10067 = 0x0432;\n  t.afii10068 = 0x0433;\n  t.afii10069 = 0x0434;\n  t.afii10070 = 0x0435;\n  t.afii10071 = 0x0451;\n  t.afii10072 = 0x0436;\n  t.afii10073 = 0x0437;\n  t.afii10074 = 0x0438;\n  t.afii10075 = 0x0439;\n  t.afii10076 = 0x043a;\n  t.afii10077 = 0x043b;\n  t.afii10078 = 0x043c;\n  t.afii10079 = 0x043d;\n  t.afii10080 = 0x043e;\n  t.afii10081 = 0x043f;\n  t.afii10082 = 0x0440;\n  t.afii10083 = 0x0441;\n  t.afii10084 = 0x0442;\n  t.afii10085 = 0x0443;\n  t.afii10086 = 0x0444;\n  t.afii10087 = 0x0445;\n  t.afii10088 = 0x0446;\n  t.afii10089 = 0x0447;\n  t.afii10090 = 0x0448;\n  t.afii10091 = 0x0449;\n  t.afii10092 = 0x044a;\n  t.afii10093 = 0x044b;\n  t.afii10094 = 0x044c;\n  t.afii10095 = 0x044d;\n  t.afii10096 = 0x044e;\n  t.afii10097 = 0x044f;\n  t.afii10098 = 0x0491;\n  t.afii10099 = 0x0452;\n  t.afii10100 = 0x0453;\n  t.afii10101 = 0x0454;\n  t.afii10102 = 0x0455;\n  t.afii10103 = 0x0456;\n  t.afii10104 = 0x0457;\n  t.afii10105 = 0x0458;\n  t.afii10106 = 0x0459;\n  t.afii10107 = 0x045a;\n  t.afii10108 = 0x045b;\n  t.afii10109 = 0x045c;\n  t.afii10110 = 0x045e;\n  t.afii10145 = 0x040f;\n  t.afii10146 = 0x0462;\n  t.afii10147 = 0x0472;\n  t.afii10148 = 0x0474;\n  t.afii10192 = 0xf6c6;\n  t.afii10193 = 0x045f;\n  t.afii10194 = 0x0463;\n  t.afii10195 = 0x0473;\n  t.afii10196 = 0x0475;\n  t.afii10831 = 0xf6c7;\n  t.afii10832 = 0xf6c8;\n  t.afii10846 = 0x04d9;\n  t.afii299 = 0x200e;\n  t.afii300 = 0x200f;\n  t.afii301 = 0x200d;\n  t.afii57381 = 0x066a;\n  t.afii57388 = 0x060c;\n  t.afii57392 = 0x0660;\n  t.afii57393 = 0x0661;\n  t.afii57394 = 0x0662;\n  t.afii57395 = 0x0663;\n  t.afii57396 = 0x0664;\n  t.afii57397 = 0x0665;\n  t.afii57398 = 0x0666;\n  t.afii57399 = 0x0667;\n  t.afii57400 = 0x0668;\n  t.afii57401 = 0x0669;\n  t.afii57403 = 0x061b;\n  t.afii57407 = 0x061f;\n  t.afii57409 = 0x0621;\n  t.afii57410 = 0x0622;\n  t.afii57411 = 0x0623;\n  t.afii57412 = 0x0624;\n  t.afii57413 = 0x0625;\n  t.afii57414 = 0x0626;\n  t.afii57415 = 0x0627;\n  t.afii57416 = 0x0628;\n  t.afii57417 = 0x0629;\n  t.afii57418 = 0x062a;\n  t.afii57419 = 0x062b;\n  t.afii57420 = 0x062c;\n  t.afii57421 = 0x062d;\n  t.afii57422 = 0x062e;\n  t.afii57423 = 0x062f;\n  t.afii57424 = 0x0630;\n  t.afii57425 = 0x0631;\n  t.afii57426 = 0x0632;\n  t.afii57427 = 0x0633;\n  t.afii57428 = 0x0634;\n  t.afii57429 = 0x0635;\n  t.afii57430 = 0x0636;\n  t.afii57431 = 0x0637;\n  t.afii57432 = 0x0638;\n  t.afii57433 = 0x0639;\n  t.afii57434 = 0x063a;\n  t.afii57440 = 0x0640;\n  t.afii57441 = 0x0641;\n  t.afii57442 = 0x0642;\n  t.afii57443 = 0x0643;\n  t.afii57444 = 0x0644;\n  t.afii57445 = 0x0645;\n  t.afii57446 = 0x0646;\n  t.afii57448 = 0x0648;\n  t.afii57449 = 0x0649;\n  t.afii57450 = 0x064a;\n  t.afii57451 = 0x064b;\n  t.afii57452 = 0x064c;\n  t.afii57453 = 0x064d;\n  t.afii57454 = 0x064e;\n  t.afii57455 = 0x064f;\n  t.afii57456 = 0x0650;\n  t.afii57457 = 0x0651;\n  t.afii57458 = 0x0652;\n  t.afii57470 = 0x0647;\n  t.afii57505 = 0x06a4;\n  t.afii57506 = 0x067e;\n  t.afii57507 = 0x0686;\n  t.afii57508 = 0x0698;\n  t.afii57509 = 0x06af;\n  t.afii57511 = 0x0679;\n  t.afii57512 = 0x0688;\n  t.afii57513 = 0x0691;\n  t.afii57514 = 0x06ba;\n  t.afii57519 = 0x06d2;\n  t.afii57534 = 0x06d5;\n  t.afii57636 = 0x20aa;\n  t.afii57645 = 0x05be;\n  t.afii57658 = 0x05c3;\n  t.afii57664 = 0x05d0;\n  t.afii57665 = 0x05d1;\n  t.afii57666 = 0x05d2;\n  t.afii57667 = 0x05d3;\n  t.afii57668 = 0x05d4;\n  t.afii57669 = 0x05d5;\n  t.afii57670 = 0x05d6;\n  t.afii57671 = 0x05d7;\n  t.afii57672 = 0x05d8;\n  t.afii57673 = 0x05d9;\n  t.afii57674 = 0x05da;\n  t.afii57675 = 0x05db;\n  t.afii57676 = 0x05dc;\n  t.afii57677 = 0x05dd;\n  t.afii57678 = 0x05de;\n  t.afii57679 = 0x05df;\n  t.afii57680 = 0x05e0;\n  t.afii57681 = 0x05e1;\n  t.afii57682 = 0x05e2;\n  t.afii57683 = 0x05e3;\n  t.afii57684 = 0x05e4;\n  t.afii57685 = 0x05e5;\n  t.afii57686 = 0x05e6;\n  t.afii57687 = 0x05e7;\n  t.afii57688 = 0x05e8;\n  t.afii57689 = 0x05e9;\n  t.afii57690 = 0x05ea;\n  t.afii57694 = 0xfb2a;\n  t.afii57695 = 0xfb2b;\n  t.afii57700 = 0xfb4b;\n  t.afii57705 = 0xfb1f;\n  t.afii57716 = 0x05f0;\n  t.afii57717 = 0x05f1;\n  t.afii57718 = 0x05f2;\n  t.afii57723 = 0xfb35;\n  t.afii57793 = 0x05b4;\n  t.afii57794 = 0x05b5;\n  t.afii57795 = 0x05b6;\n  t.afii57796 = 0x05bb;\n  t.afii57797 = 0x05b8;\n  t.afii57798 = 0x05b7;\n  t.afii57799 = 0x05b0;\n  t.afii57800 = 0x05b2;\n  t.afii57801 = 0x05b1;\n  t.afii57802 = 0x05b3;\n  t.afii57803 = 0x05c2;\n  t.afii57804 = 0x05c1;\n  t.afii57806 = 0x05b9;\n  t.afii57807 = 0x05bc;\n  t.afii57839 = 0x05bd;\n  t.afii57841 = 0x05bf;\n  t.afii57842 = 0x05c0;\n  t.afii57929 = 0x02bc;\n  t.afii61248 = 0x2105;\n  t.afii61289 = 0x2113;\n  t.afii61352 = 0x2116;\n  t.afii61573 = 0x202c;\n  t.afii61574 = 0x202d;\n  t.afii61575 = 0x202e;\n  t.afii61664 = 0x200c;\n  t.afii63167 = 0x066d;\n  t.afii64937 = 0x02bd;\n  t.agrave = 0x00e0;\n  t.agujarati = 0x0a85;\n  t.agurmukhi = 0x0a05;\n  t.ahiragana = 0x3042;\n  t.ahookabove = 0x1ea3;\n  t.aibengali = 0x0990;\n  t.aibopomofo = 0x311e;\n  t.aideva = 0x0910;\n  t.aiecyrillic = 0x04d5;\n  t.aigujarati = 0x0a90;\n  t.aigurmukhi = 0x0a10;\n  t.aimatragurmukhi = 0x0a48;\n  t.ainarabic = 0x0639;\n  t.ainfinalarabic = 0xfeca;\n  t.aininitialarabic = 0xfecb;\n  t.ainmedialarabic = 0xfecc;\n  t.ainvertedbreve = 0x0203;\n  t.aivowelsignbengali = 0x09c8;\n  t.aivowelsigndeva = 0x0948;\n  t.aivowelsigngujarati = 0x0ac8;\n  t.akatakana = 0x30a2;\n  t.akatakanahalfwidth = 0xff71;\n  t.akorean = 0x314f;\n  t.alef = 0x05d0;\n  t.alefarabic = 0x0627;\n  t.alefdageshhebrew = 0xfb30;\n  t.aleffinalarabic = 0xfe8e;\n  t.alefhamzaabovearabic = 0x0623;\n  t.alefhamzaabovefinalarabic = 0xfe84;\n  t.alefhamzabelowarabic = 0x0625;\n  t.alefhamzabelowfinalarabic = 0xfe88;\n  t.alefhebrew = 0x05d0;\n  t.aleflamedhebrew = 0xfb4f;\n  t.alefmaddaabovearabic = 0x0622;\n  t.alefmaddaabovefinalarabic = 0xfe82;\n  t.alefmaksuraarabic = 0x0649;\n  t.alefmaksurafinalarabic = 0xfef0;\n  t.alefmaksurainitialarabic = 0xfef3;\n  t.alefmaksuramedialarabic = 0xfef4;\n  t.alefpatahhebrew = 0xfb2e;\n  t.alefqamatshebrew = 0xfb2f;\n  t.aleph = 0x2135;\n  t.allequal = 0x224c;\n  t.alpha = 0x03b1;\n  t.alphatonos = 0x03ac;\n  t.amacron = 0x0101;\n  t.amonospace = 0xff41;\n  t.ampersand = 0x0026;\n  t.ampersandmonospace = 0xff06;\n  t.ampersandsmall = 0xf726;\n  t.amsquare = 0x33c2;\n  t.anbopomofo = 0x3122;\n  t.angbopomofo = 0x3124;\n  t.angbracketleft = 0x3008; // Glyph is missing from Adobe's original list.\n  t.angbracketright = 0x3009; // Glyph is missing from Adobe's original list.\n  t.angkhankhuthai = 0x0e5a;\n  t.angle = 0x2220;\n  t.anglebracketleft = 0x3008;\n  t.anglebracketleftvertical = 0xfe3f;\n  t.anglebracketright = 0x3009;\n  t.anglebracketrightvertical = 0xfe40;\n  t.angleleft = 0x2329;\n  t.angleright = 0x232a;\n  t.angstrom = 0x212b;\n  t.anoteleia = 0x0387;\n  t.anudattadeva = 0x0952;\n  t.anusvarabengali = 0x0982;\n  t.anusvaradeva = 0x0902;\n  t.anusvaragujarati = 0x0a82;\n  t.aogonek = 0x0105;\n  t.apaatosquare = 0x3300;\n  t.aparen = 0x249c;\n  t.apostrophearmenian = 0x055a;\n  t.apostrophemod = 0x02bc;\n  t.apple = 0xf8ff;\n  t.approaches = 0x2250;\n  t.approxequal = 0x2248;\n  t.approxequalorimage = 0x2252;\n  t.approximatelyequal = 0x2245;\n  t.araeaekorean = 0x318e;\n  t.araeakorean = 0x318d;\n  t.arc = 0x2312;\n  t.arighthalfring = 0x1e9a;\n  t.aring = 0x00e5;\n  t.aringacute = 0x01fb;\n  t.aringbelow = 0x1e01;\n  t.arrowboth = 0x2194;\n  t.arrowdashdown = 0x21e3;\n  t.arrowdashleft = 0x21e0;\n  t.arrowdashright = 0x21e2;\n  t.arrowdashup = 0x21e1;\n  t.arrowdblboth = 0x21d4;\n  t.arrowdbldown = 0x21d3;\n  t.arrowdblleft = 0x21d0;\n  t.arrowdblright = 0x21d2;\n  t.arrowdblup = 0x21d1;\n  t.arrowdown = 0x2193;\n  t.arrowdownleft = 0x2199;\n  t.arrowdownright = 0x2198;\n  t.arrowdownwhite = 0x21e9;\n  t.arrowheaddownmod = 0x02c5;\n  t.arrowheadleftmod = 0x02c2;\n  t.arrowheadrightmod = 0x02c3;\n  t.arrowheadupmod = 0x02c4;\n  t.arrowhorizex = 0xf8e7;\n  t.arrowleft = 0x2190;\n  t.arrowleftdbl = 0x21d0;\n  t.arrowleftdblstroke = 0x21cd;\n  t.arrowleftoverright = 0x21c6;\n  t.arrowleftwhite = 0x21e6;\n  t.arrowright = 0x2192;\n  t.arrowrightdblstroke = 0x21cf;\n  t.arrowrightheavy = 0x279e;\n  t.arrowrightoverleft = 0x21c4;\n  t.arrowrightwhite = 0x21e8;\n  t.arrowtableft = 0x21e4;\n  t.arrowtabright = 0x21e5;\n  t.arrowup = 0x2191;\n  t.arrowupdn = 0x2195;\n  t.arrowupdnbse = 0x21a8;\n  t.arrowupdownbase = 0x21a8;\n  t.arrowupleft = 0x2196;\n  t.arrowupleftofdown = 0x21c5;\n  t.arrowupright = 0x2197;\n  t.arrowupwhite = 0x21e7;\n  t.arrowvertex = 0xf8e6;\n  t.asciicircum = 0x005e;\n  t.asciicircummonospace = 0xff3e;\n  t.asciitilde = 0x007e;\n  t.asciitildemonospace = 0xff5e;\n  t.ascript = 0x0251;\n  t.ascriptturned = 0x0252;\n  t.asmallhiragana = 0x3041;\n  t.asmallkatakana = 0x30a1;\n  t.asmallkatakanahalfwidth = 0xff67;\n  t.asterisk = 0x002a;\n  t.asteriskaltonearabic = 0x066d;\n  t.asteriskarabic = 0x066d;\n  t.asteriskmath = 0x2217;\n  t.asteriskmonospace = 0xff0a;\n  t.asterisksmall = 0xfe61;\n  t.asterism = 0x2042;\n  t.asuperior = 0xf6e9;\n  t.asymptoticallyequal = 0x2243;\n  t.at = 0x0040;\n  t.atilde = 0x00e3;\n  t.atmonospace = 0xff20;\n  t.atsmall = 0xfe6b;\n  t.aturned = 0x0250;\n  t.aubengali = 0x0994;\n  t.aubopomofo = 0x3120;\n  t.audeva = 0x0914;\n  t.augujarati = 0x0a94;\n  t.augurmukhi = 0x0a14;\n  t.aulengthmarkbengali = 0x09d7;\n  t.aumatragurmukhi = 0x0a4c;\n  t.auvowelsignbengali = 0x09cc;\n  t.auvowelsigndeva = 0x094c;\n  t.auvowelsigngujarati = 0x0acc;\n  t.avagrahadeva = 0x093d;\n  t.aybarmenian = 0x0561;\n  t.ayin = 0x05e2;\n  t.ayinaltonehebrew = 0xfb20;\n  t.ayinhebrew = 0x05e2;\n  t.b = 0x0062;\n  t.babengali = 0x09ac;\n  t.backslash = 0x005c;\n  t.backslashmonospace = 0xff3c;\n  t.badeva = 0x092c;\n  t.bagujarati = 0x0aac;\n  t.bagurmukhi = 0x0a2c;\n  t.bahiragana = 0x3070;\n  t.bahtthai = 0x0e3f;\n  t.bakatakana = 0x30d0;\n  t.bar = 0x007c;\n  t.barmonospace = 0xff5c;\n  t.bbopomofo = 0x3105;\n  t.bcircle = 0x24d1;\n  t.bdotaccent = 0x1e03;\n  t.bdotbelow = 0x1e05;\n  t.beamedsixteenthnotes = 0x266c;\n  t.because = 0x2235;\n  t.becyrillic = 0x0431;\n  t.beharabic = 0x0628;\n  t.behfinalarabic = 0xfe90;\n  t.behinitialarabic = 0xfe91;\n  t.behiragana = 0x3079;\n  t.behmedialarabic = 0xfe92;\n  t.behmeeminitialarabic = 0xfc9f;\n  t.behmeemisolatedarabic = 0xfc08;\n  t.behnoonfinalarabic = 0xfc6d;\n  t.bekatakana = 0x30d9;\n  t.benarmenian = 0x0562;\n  t.bet = 0x05d1;\n  t.beta = 0x03b2;\n  t.betasymbolgreek = 0x03d0;\n  t.betdagesh = 0xfb31;\n  t.betdageshhebrew = 0xfb31;\n  t.bethebrew = 0x05d1;\n  t.betrafehebrew = 0xfb4c;\n  t.bhabengali = 0x09ad;\n  t.bhadeva = 0x092d;\n  t.bhagujarati = 0x0aad;\n  t.bhagurmukhi = 0x0a2d;\n  t.bhook = 0x0253;\n  t.bihiragana = 0x3073;\n  t.bikatakana = 0x30d3;\n  t.bilabialclick = 0x0298;\n  t.bindigurmukhi = 0x0a02;\n  t.birusquare = 0x3331;\n  t.blackcircle = 0x25cf;\n  t.blackdiamond = 0x25c6;\n  t.blackdownpointingtriangle = 0x25bc;\n  t.blackleftpointingpointer = 0x25c4;\n  t.blackleftpointingtriangle = 0x25c0;\n  t.blacklenticularbracketleft = 0x3010;\n  t.blacklenticularbracketleftvertical = 0xfe3b;\n  t.blacklenticularbracketright = 0x3011;\n  t.blacklenticularbracketrightvertical = 0xfe3c;\n  t.blacklowerlefttriangle = 0x25e3;\n  t.blacklowerrighttriangle = 0x25e2;\n  t.blackrectangle = 0x25ac;\n  t.blackrightpointingpointer = 0x25ba;\n  t.blackrightpointingtriangle = 0x25b6;\n  t.blacksmallsquare = 0x25aa;\n  t.blacksmilingface = 0x263b;\n  t.blacksquare = 0x25a0;\n  t.blackstar = 0x2605;\n  t.blackupperlefttriangle = 0x25e4;\n  t.blackupperrighttriangle = 0x25e5;\n  t.blackuppointingsmalltriangle = 0x25b4;\n  t.blackuppointingtriangle = 0x25b2;\n  t.blank = 0x2423;\n  t.blinebelow = 0x1e07;\n  t.block = 0x2588;\n  t.bmonospace = 0xff42;\n  t.bobaimaithai = 0x0e1a;\n  t.bohiragana = 0x307c;\n  t.bokatakana = 0x30dc;\n  t.bparen = 0x249d;\n  t.bqsquare = 0x33c3;\n  t.braceex = 0xf8f4;\n  t.braceleft = 0x007b;\n  t.braceleftbt = 0xf8f3;\n  t.braceleftmid = 0xf8f2;\n  t.braceleftmonospace = 0xff5b;\n  t.braceleftsmall = 0xfe5b;\n  t.bracelefttp = 0xf8f1;\n  t.braceleftvertical = 0xfe37;\n  t.braceright = 0x007d;\n  t.bracerightbt = 0xf8fe;\n  t.bracerightmid = 0xf8fd;\n  t.bracerightmonospace = 0xff5d;\n  t.bracerightsmall = 0xfe5c;\n  t.bracerighttp = 0xf8fc;\n  t.bracerightvertical = 0xfe38;\n  t.bracketleft = 0x005b;\n  t.bracketleftbt = 0xf8f0;\n  t.bracketleftex = 0xf8ef;\n  t.bracketleftmonospace = 0xff3b;\n  t.bracketlefttp = 0xf8ee;\n  t.bracketright = 0x005d;\n  t.bracketrightbt = 0xf8fb;\n  t.bracketrightex = 0xf8fa;\n  t.bracketrightmonospace = 0xff3d;\n  t.bracketrighttp = 0xf8f9;\n  t.breve = 0x02d8;\n  t.brevebelowcmb = 0x032e;\n  t.brevecmb = 0x0306;\n  t.breveinvertedbelowcmb = 0x032f;\n  t.breveinvertedcmb = 0x0311;\n  t.breveinverteddoublecmb = 0x0361;\n  t.bridgebelowcmb = 0x032a;\n  t.bridgeinvertedbelowcmb = 0x033a;\n  t.brokenbar = 0x00a6;\n  t.bstroke = 0x0180;\n  t.bsuperior = 0xf6ea;\n  t.btopbar = 0x0183;\n  t.buhiragana = 0x3076;\n  t.bukatakana = 0x30d6;\n  t.bullet = 0x2022;\n  t.bulletinverse = 0x25d8;\n  t.bulletoperator = 0x2219;\n  t.bullseye = 0x25ce;\n  t.c = 0x0063;\n  t.caarmenian = 0x056e;\n  t.cabengali = 0x099a;\n  t.cacute = 0x0107;\n  t.cadeva = 0x091a;\n  t.cagujarati = 0x0a9a;\n  t.cagurmukhi = 0x0a1a;\n  t.calsquare = 0x3388;\n  t.candrabindubengali = 0x0981;\n  t.candrabinducmb = 0x0310;\n  t.candrabindudeva = 0x0901;\n  t.candrabindugujarati = 0x0a81;\n  t.capslock = 0x21ea;\n  t.careof = 0x2105;\n  t.caron = 0x02c7;\n  t.caronbelowcmb = 0x032c;\n  t.caroncmb = 0x030c;\n  t.carriagereturn = 0x21b5;\n  t.cbopomofo = 0x3118;\n  t.ccaron = 0x010d;\n  t.ccedilla = 0x00e7;\n  t.ccedillaacute = 0x1e09;\n  t.ccircle = 0x24d2;\n  t.ccircumflex = 0x0109;\n  t.ccurl = 0x0255;\n  t.cdot = 0x010b;\n  t.cdotaccent = 0x010b;\n  t.cdsquare = 0x33c5;\n  t.cedilla = 0x00b8;\n  t.cedillacmb = 0x0327;\n  t.cent = 0x00a2;\n  t.centigrade = 0x2103;\n  t.centinferior = 0xf6df;\n  t.centmonospace = 0xffe0;\n  t.centoldstyle = 0xf7a2;\n  t.centsuperior = 0xf6e0;\n  t.chaarmenian = 0x0579;\n  t.chabengali = 0x099b;\n  t.chadeva = 0x091b;\n  t.chagujarati = 0x0a9b;\n  t.chagurmukhi = 0x0a1b;\n  t.chbopomofo = 0x3114;\n  t.cheabkhasiancyrillic = 0x04bd;\n  t.checkmark = 0x2713;\n  t.checyrillic = 0x0447;\n  t.chedescenderabkhasiancyrillic = 0x04bf;\n  t.chedescendercyrillic = 0x04b7;\n  t.chedieresiscyrillic = 0x04f5;\n  t.cheharmenian = 0x0573;\n  t.chekhakassiancyrillic = 0x04cc;\n  t.cheverticalstrokecyrillic = 0x04b9;\n  t.chi = 0x03c7;\n  t.chieuchacirclekorean = 0x3277;\n  t.chieuchaparenkorean = 0x3217;\n  t.chieuchcirclekorean = 0x3269;\n  t.chieuchkorean = 0x314a;\n  t.chieuchparenkorean = 0x3209;\n  t.chochangthai = 0x0e0a;\n  t.chochanthai = 0x0e08;\n  t.chochingthai = 0x0e09;\n  t.chochoethai = 0x0e0c;\n  t.chook = 0x0188;\n  t.cieucacirclekorean = 0x3276;\n  t.cieucaparenkorean = 0x3216;\n  t.cieuccirclekorean = 0x3268;\n  t.cieuckorean = 0x3148;\n  t.cieucparenkorean = 0x3208;\n  t.cieucuparenkorean = 0x321c;\n  t.circle = 0x25cb;\n  t.circlecopyrt = 0x00a9; // Glyph is missing from Adobe's original list.\n  t.circlemultiply = 0x2297;\n  t.circleot = 0x2299;\n  t.circleplus = 0x2295;\n  t.circlepostalmark = 0x3036;\n  t.circlewithlefthalfblack = 0x25d0;\n  t.circlewithrighthalfblack = 0x25d1;\n  t.circumflex = 0x02c6;\n  t.circumflexbelowcmb = 0x032d;\n  t.circumflexcmb = 0x0302;\n  t.clear = 0x2327;\n  t.clickalveolar = 0x01c2;\n  t.clickdental = 0x01c0;\n  t.clicklateral = 0x01c1;\n  t.clickretroflex = 0x01c3;\n  t.club = 0x2663;\n  t.clubsuitblack = 0x2663;\n  t.clubsuitwhite = 0x2667;\n  t.cmcubedsquare = 0x33a4;\n  t.cmonospace = 0xff43;\n  t.cmsquaredsquare = 0x33a0;\n  t.coarmenian = 0x0581;\n  t.colon = 0x003a;\n  t.colonmonetary = 0x20a1;\n  t.colonmonospace = 0xff1a;\n  t.colonsign = 0x20a1;\n  t.colonsmall = 0xfe55;\n  t.colontriangularhalfmod = 0x02d1;\n  t.colontriangularmod = 0x02d0;\n  t.comma = 0x002c;\n  t.commaabovecmb = 0x0313;\n  t.commaaboverightcmb = 0x0315;\n  t.commaaccent = 0xf6c3;\n  t.commaarabic = 0x060c;\n  t.commaarmenian = 0x055d;\n  t.commainferior = 0xf6e1;\n  t.commamonospace = 0xff0c;\n  t.commareversedabovecmb = 0x0314;\n  t.commareversedmod = 0x02bd;\n  t.commasmall = 0xfe50;\n  t.commasuperior = 0xf6e2;\n  t.commaturnedabovecmb = 0x0312;\n  t.commaturnedmod = 0x02bb;\n  t.compass = 0x263c;\n  t.congruent = 0x2245;\n  t.contourintegral = 0x222e;\n  t.control = 0x2303;\n  t.controlACK = 0x0006;\n  t.controlBEL = 0x0007;\n  t.controlBS = 0x0008;\n  t.controlCAN = 0x0018;\n  t.controlCR = 0x000d;\n  t.controlDC1 = 0x0011;\n  t.controlDC2 = 0x0012;\n  t.controlDC3 = 0x0013;\n  t.controlDC4 = 0x0014;\n  t.controlDEL = 0x007f;\n  t.controlDLE = 0x0010;\n  t.controlEM = 0x0019;\n  t.controlENQ = 0x0005;\n  t.controlEOT = 0x0004;\n  t.controlESC = 0x001b;\n  t.controlETB = 0x0017;\n  t.controlETX = 0x0003;\n  t.controlFF = 0x000c;\n  t.controlFS = 0x001c;\n  t.controlGS = 0x001d;\n  t.controlHT = 0x0009;\n  t.controlLF = 0x000a;\n  t.controlNAK = 0x0015;\n  t.controlNULL = 0x0000; // Glyph is missing from Adobe's original list.\n  t.controlRS = 0x001e;\n  t.controlSI = 0x000f;\n  t.controlSO = 0x000e;\n  t.controlSOT = 0x0002;\n  t.controlSTX = 0x0001;\n  t.controlSUB = 0x001a;\n  t.controlSYN = 0x0016;\n  t.controlUS = 0x001f;\n  t.controlVT = 0x000b;\n  t.copyright = 0x00a9;\n  t.copyrightsans = 0xf8e9;\n  t.copyrightserif = 0xf6d9;\n  t.cornerbracketleft = 0x300c;\n  t.cornerbracketlefthalfwidth = 0xff62;\n  t.cornerbracketleftvertical = 0xfe41;\n  t.cornerbracketright = 0x300d;\n  t.cornerbracketrighthalfwidth = 0xff63;\n  t.cornerbracketrightvertical = 0xfe42;\n  t.corporationsquare = 0x337f;\n  t.cosquare = 0x33c7;\n  t.coverkgsquare = 0x33c6;\n  t.cparen = 0x249e;\n  t.cruzeiro = 0x20a2;\n  t.cstretched = 0x0297;\n  t.curlyand = 0x22cf;\n  t.curlyor = 0x22ce;\n  t.currency = 0x00a4;\n  t.cyrBreve = 0xf6d1;\n  t.cyrFlex = 0xf6d2;\n  t.cyrbreve = 0xf6d4;\n  t.cyrflex = 0xf6d5;\n  t.d = 0x0064;\n  t.daarmenian = 0x0564;\n  t.dabengali = 0x09a6;\n  t.dadarabic = 0x0636;\n  t.dadeva = 0x0926;\n  t.dadfinalarabic = 0xfebe;\n  t.dadinitialarabic = 0xfebf;\n  t.dadmedialarabic = 0xfec0;\n  t.dagesh = 0x05bc;\n  t.dageshhebrew = 0x05bc;\n  t.dagger = 0x2020;\n  t.daggerdbl = 0x2021;\n  t.dagujarati = 0x0aa6;\n  t.dagurmukhi = 0x0a26;\n  t.dahiragana = 0x3060;\n  t.dakatakana = 0x30c0;\n  t.dalarabic = 0x062f;\n  t.dalet = 0x05d3;\n  t.daletdagesh = 0xfb33;\n  t.daletdageshhebrew = 0xfb33;\n  t.dalethebrew = 0x05d3;\n  t.dalfinalarabic = 0xfeaa;\n  t.dammaarabic = 0x064f;\n  t.dammalowarabic = 0x064f;\n  t.dammatanaltonearabic = 0x064c;\n  t.dammatanarabic = 0x064c;\n  t.danda = 0x0964;\n  t.dargahebrew = 0x05a7;\n  t.dargalefthebrew = 0x05a7;\n  t.dasiapneumatacyrilliccmb = 0x0485;\n  t.dblGrave = 0xf6d3;\n  t.dblanglebracketleft = 0x300a;\n  t.dblanglebracketleftvertical = 0xfe3d;\n  t.dblanglebracketright = 0x300b;\n  t.dblanglebracketrightvertical = 0xfe3e;\n  t.dblarchinvertedbelowcmb = 0x032b;\n  t.dblarrowleft = 0x21d4;\n  t.dblarrowright = 0x21d2;\n  t.dbldanda = 0x0965;\n  t.dblgrave = 0xf6d6;\n  t.dblgravecmb = 0x030f;\n  t.dblintegral = 0x222c;\n  t.dbllowline = 0x2017;\n  t.dbllowlinecmb = 0x0333;\n  t.dbloverlinecmb = 0x033f;\n  t.dblprimemod = 0x02ba;\n  t.dblverticalbar = 0x2016;\n  t.dblverticallineabovecmb = 0x030e;\n  t.dbopomofo = 0x3109;\n  t.dbsquare = 0x33c8;\n  t.dcaron = 0x010f;\n  t.dcedilla = 0x1e11;\n  t.dcircle = 0x24d3;\n  t.dcircumflexbelow = 0x1e13;\n  t.dcroat = 0x0111;\n  t.ddabengali = 0x09a1;\n  t.ddadeva = 0x0921;\n  t.ddagujarati = 0x0aa1;\n  t.ddagurmukhi = 0x0a21;\n  t.ddalarabic = 0x0688;\n  t.ddalfinalarabic = 0xfb89;\n  t.dddhadeva = 0x095c;\n  t.ddhabengali = 0x09a2;\n  t.ddhadeva = 0x0922;\n  t.ddhagujarati = 0x0aa2;\n  t.ddhagurmukhi = 0x0a22;\n  t.ddotaccent = 0x1e0b;\n  t.ddotbelow = 0x1e0d;\n  t.decimalseparatorarabic = 0x066b;\n  t.decimalseparatorpersian = 0x066b;\n  t.decyrillic = 0x0434;\n  t.degree = 0x00b0;\n  t.dehihebrew = 0x05ad;\n  t.dehiragana = 0x3067;\n  t.deicoptic = 0x03ef;\n  t.dekatakana = 0x30c7;\n  t.deleteleft = 0x232b;\n  t.deleteright = 0x2326;\n  t.delta = 0x03b4;\n  t.deltaturned = 0x018d;\n  t.denominatorminusonenumeratorbengali = 0x09f8;\n  t.dezh = 0x02a4;\n  t.dhabengali = 0x09a7;\n  t.dhadeva = 0x0927;\n  t.dhagujarati = 0x0aa7;\n  t.dhagurmukhi = 0x0a27;\n  t.dhook = 0x0257;\n  t.dialytikatonos = 0x0385;\n  t.dialytikatonoscmb = 0x0344;\n  t.diamond = 0x2666;\n  t.diamondsuitwhite = 0x2662;\n  t.dieresis = 0x00a8;\n  t.dieresisacute = 0xf6d7;\n  t.dieresisbelowcmb = 0x0324;\n  t.dieresiscmb = 0x0308;\n  t.dieresisgrave = 0xf6d8;\n  t.dieresistonos = 0x0385;\n  t.dihiragana = 0x3062;\n  t.dikatakana = 0x30c2;\n  t.dittomark = 0x3003;\n  t.divide = 0x00f7;\n  t.divides = 0x2223;\n  t.divisionslash = 0x2215;\n  t.djecyrillic = 0x0452;\n  t.dkshade = 0x2593;\n  t.dlinebelow = 0x1e0f;\n  t.dlsquare = 0x3397;\n  t.dmacron = 0x0111;\n  t.dmonospace = 0xff44;\n  t.dnblock = 0x2584;\n  t.dochadathai = 0x0e0e;\n  t.dodekthai = 0x0e14;\n  t.dohiragana = 0x3069;\n  t.dokatakana = 0x30c9;\n  t.dollar = 0x0024;\n  t.dollarinferior = 0xf6e3;\n  t.dollarmonospace = 0xff04;\n  t.dollaroldstyle = 0xf724;\n  t.dollarsmall = 0xfe69;\n  t.dollarsuperior = 0xf6e4;\n  t.dong = 0x20ab;\n  t.dorusquare = 0x3326;\n  t.dotaccent = 0x02d9;\n  t.dotaccentcmb = 0x0307;\n  t.dotbelowcmb = 0x0323;\n  t.dotbelowcomb = 0x0323;\n  t.dotkatakana = 0x30fb;\n  t.dotlessi = 0x0131;\n  t.dotlessj = 0xf6be;\n  t.dotlessjstrokehook = 0x0284;\n  t.dotmath = 0x22c5;\n  t.dottedcircle = 0x25cc;\n  t.doubleyodpatah = 0xfb1f;\n  t.doubleyodpatahhebrew = 0xfb1f;\n  t.downtackbelowcmb = 0x031e;\n  t.downtackmod = 0x02d5;\n  t.dparen = 0x249f;\n  t.dsuperior = 0xf6eb;\n  t.dtail = 0x0256;\n  t.dtopbar = 0x018c;\n  t.duhiragana = 0x3065;\n  t.dukatakana = 0x30c5;\n  t.dz = 0x01f3;\n  t.dzaltone = 0x02a3;\n  t.dzcaron = 0x01c6;\n  t.dzcurl = 0x02a5;\n  t.dzeabkhasiancyrillic = 0x04e1;\n  t.dzecyrillic = 0x0455;\n  t.dzhecyrillic = 0x045f;\n  t.e = 0x0065;\n  t.eacute = 0x00e9;\n  t.earth = 0x2641;\n  t.ebengali = 0x098f;\n  t.ebopomofo = 0x311c;\n  t.ebreve = 0x0115;\n  t.ecandradeva = 0x090d;\n  t.ecandragujarati = 0x0a8d;\n  t.ecandravowelsigndeva = 0x0945;\n  t.ecandravowelsigngujarati = 0x0ac5;\n  t.ecaron = 0x011b;\n  t.ecedillabreve = 0x1e1d;\n  t.echarmenian = 0x0565;\n  t.echyiwnarmenian = 0x0587;\n  t.ecircle = 0x24d4;\n  t.ecircumflex = 0x00ea;\n  t.ecircumflexacute = 0x1ebf;\n  t.ecircumflexbelow = 0x1e19;\n  t.ecircumflexdotbelow = 0x1ec7;\n  t.ecircumflexgrave = 0x1ec1;\n  t.ecircumflexhookabove = 0x1ec3;\n  t.ecircumflextilde = 0x1ec5;\n  t.ecyrillic = 0x0454;\n  t.edblgrave = 0x0205;\n  t.edeva = 0x090f;\n  t.edieresis = 0x00eb;\n  t.edot = 0x0117;\n  t.edotaccent = 0x0117;\n  t.edotbelow = 0x1eb9;\n  t.eegurmukhi = 0x0a0f;\n  t.eematragurmukhi = 0x0a47;\n  t.efcyrillic = 0x0444;\n  t.egrave = 0x00e8;\n  t.egujarati = 0x0a8f;\n  t.eharmenian = 0x0567;\n  t.ehbopomofo = 0x311d;\n  t.ehiragana = 0x3048;\n  t.ehookabove = 0x1ebb;\n  t.eibopomofo = 0x311f;\n  t.eight = 0x0038;\n  t.eightarabic = 0x0668;\n  t.eightbengali = 0x09ee;\n  t.eightcircle = 0x2467;\n  t.eightcircleinversesansserif = 0x2791;\n  t.eightdeva = 0x096e;\n  t.eighteencircle = 0x2471;\n  t.eighteenparen = 0x2485;\n  t.eighteenperiod = 0x2499;\n  t.eightgujarati = 0x0aee;\n  t.eightgurmukhi = 0x0a6e;\n  t.eighthackarabic = 0x0668;\n  t.eighthangzhou = 0x3028;\n  t.eighthnotebeamed = 0x266b;\n  t.eightideographicparen = 0x3227;\n  t.eightinferior = 0x2088;\n  t.eightmonospace = 0xff18;\n  t.eightoldstyle = 0xf738;\n  t.eightparen = 0x247b;\n  t.eightperiod = 0x248f;\n  t.eightpersian = 0x06f8;\n  t.eightroman = 0x2177;\n  t.eightsuperior = 0x2078;\n  t.eightthai = 0x0e58;\n  t.einvertedbreve = 0x0207;\n  t.eiotifiedcyrillic = 0x0465;\n  t.ekatakana = 0x30a8;\n  t.ekatakanahalfwidth = 0xff74;\n  t.ekonkargurmukhi = 0x0a74;\n  t.ekorean = 0x3154;\n  t.elcyrillic = 0x043b;\n  t.element = 0x2208;\n  t.elevencircle = 0x246a;\n  t.elevenparen = 0x247e;\n  t.elevenperiod = 0x2492;\n  t.elevenroman = 0x217a;\n  t.ellipsis = 0x2026;\n  t.ellipsisvertical = 0x22ee;\n  t.emacron = 0x0113;\n  t.emacronacute = 0x1e17;\n  t.emacrongrave = 0x1e15;\n  t.emcyrillic = 0x043c;\n  t.emdash = 0x2014;\n  t.emdashvertical = 0xfe31;\n  t.emonospace = 0xff45;\n  t.emphasismarkarmenian = 0x055b;\n  t.emptyset = 0x2205;\n  t.enbopomofo = 0x3123;\n  t.encyrillic = 0x043d;\n  t.endash = 0x2013;\n  t.endashvertical = 0xfe32;\n  t.endescendercyrillic = 0x04a3;\n  t.eng = 0x014b;\n  t.engbopomofo = 0x3125;\n  t.enghecyrillic = 0x04a5;\n  t.enhookcyrillic = 0x04c8;\n  t.enspace = 0x2002;\n  t.eogonek = 0x0119;\n  t.eokorean = 0x3153;\n  t.eopen = 0x025b;\n  t.eopenclosed = 0x029a;\n  t.eopenreversed = 0x025c;\n  t.eopenreversedclosed = 0x025e;\n  t.eopenreversedhook = 0x025d;\n  t.eparen = 0x24a0;\n  t.epsilon = 0x03b5;\n  t.epsilontonos = 0x03ad;\n  t.equal = 0x003d;\n  t.equalmonospace = 0xff1d;\n  t.equalsmall = 0xfe66;\n  t.equalsuperior = 0x207c;\n  t.equivalence = 0x2261;\n  t.erbopomofo = 0x3126;\n  t.ercyrillic = 0x0440;\n  t.ereversed = 0x0258;\n  t.ereversedcyrillic = 0x044d;\n  t.escyrillic = 0x0441;\n  t.esdescendercyrillic = 0x04ab;\n  t.esh = 0x0283;\n  t.eshcurl = 0x0286;\n  t.eshortdeva = 0x090e;\n  t.eshortvowelsigndeva = 0x0946;\n  t.eshreversedloop = 0x01aa;\n  t.eshsquatreversed = 0x0285;\n  t.esmallhiragana = 0x3047;\n  t.esmallkatakana = 0x30a7;\n  t.esmallkatakanahalfwidth = 0xff6a;\n  t.estimated = 0x212e;\n  t.esuperior = 0xf6ec;\n  t.eta = 0x03b7;\n  t.etarmenian = 0x0568;\n  t.etatonos = 0x03ae;\n  t.eth = 0x00f0;\n  t.etilde = 0x1ebd;\n  t.etildebelow = 0x1e1b;\n  t.etnahtafoukhhebrew = 0x0591;\n  t.etnahtafoukhlefthebrew = 0x0591;\n  t.etnahtahebrew = 0x0591;\n  t.etnahtalefthebrew = 0x0591;\n  t.eturned = 0x01dd;\n  t.eukorean = 0x3161;\n  t.euro = 0x20ac;\n  t.evowelsignbengali = 0x09c7;\n  t.evowelsigndeva = 0x0947;\n  t.evowelsigngujarati = 0x0ac7;\n  t.exclam = 0x0021;\n  t.exclamarmenian = 0x055c;\n  t.exclamdbl = 0x203c;\n  t.exclamdown = 0x00a1;\n  t.exclamdownsmall = 0xf7a1;\n  t.exclammonospace = 0xff01;\n  t.exclamsmall = 0xf721;\n  t.existential = 0x2203;\n  t.ezh = 0x0292;\n  t.ezhcaron = 0x01ef;\n  t.ezhcurl = 0x0293;\n  t.ezhreversed = 0x01b9;\n  t.ezhtail = 0x01ba;\n  t.f = 0x0066;\n  t.fadeva = 0x095e;\n  t.fagurmukhi = 0x0a5e;\n  t.fahrenheit = 0x2109;\n  t.fathaarabic = 0x064e;\n  t.fathalowarabic = 0x064e;\n  t.fathatanarabic = 0x064b;\n  t.fbopomofo = 0x3108;\n  t.fcircle = 0x24d5;\n  t.fdotaccent = 0x1e1f;\n  t.feharabic = 0x0641;\n  t.feharmenian = 0x0586;\n  t.fehfinalarabic = 0xfed2;\n  t.fehinitialarabic = 0xfed3;\n  t.fehmedialarabic = 0xfed4;\n  t.feicoptic = 0x03e5;\n  t.female = 0x2640;\n  t.ff = 0xfb00;\n  t.f_f = 0xfb00; // Fixes issue 11016.\n  t.ffi = 0xfb03;\n  t.ffl = 0xfb04;\n  t.fi = 0xfb01;\n  t.fifteencircle = 0x246e;\n  t.fifteenparen = 0x2482;\n  t.fifteenperiod = 0x2496;\n  t.figuredash = 0x2012;\n  t.filledbox = 0x25a0;\n  t.filledrect = 0x25ac;\n  t.finalkaf = 0x05da;\n  t.finalkafdagesh = 0xfb3a;\n  t.finalkafdageshhebrew = 0xfb3a;\n  t.finalkafhebrew = 0x05da;\n  t.finalmem = 0x05dd;\n  t.finalmemhebrew = 0x05dd;\n  t.finalnun = 0x05df;\n  t.finalnunhebrew = 0x05df;\n  t.finalpe = 0x05e3;\n  t.finalpehebrew = 0x05e3;\n  t.finaltsadi = 0x05e5;\n  t.finaltsadihebrew = 0x05e5;\n  t.firsttonechinese = 0x02c9;\n  t.fisheye = 0x25c9;\n  t.fitacyrillic = 0x0473;\n  t.five = 0x0035;\n  t.fivearabic = 0x0665;\n  t.fivebengali = 0x09eb;\n  t.fivecircle = 0x2464;\n  t.fivecircleinversesansserif = 0x278e;\n  t.fivedeva = 0x096b;\n  t.fiveeighths = 0x215d;\n  t.fivegujarati = 0x0aeb;\n  t.fivegurmukhi = 0x0a6b;\n  t.fivehackarabic = 0x0665;\n  t.fivehangzhou = 0x3025;\n  t.fiveideographicparen = 0x3224;\n  t.fiveinferior = 0x2085;\n  t.fivemonospace = 0xff15;\n  t.fiveoldstyle = 0xf735;\n  t.fiveparen = 0x2478;\n  t.fiveperiod = 0x248c;\n  t.fivepersian = 0x06f5;\n  t.fiveroman = 0x2174;\n  t.fivesuperior = 0x2075;\n  t.fivethai = 0x0e55;\n  t.fl = 0xfb02;\n  t.florin = 0x0192;\n  t.fmonospace = 0xff46;\n  t.fmsquare = 0x3399;\n  t.fofanthai = 0x0e1f;\n  t.fofathai = 0x0e1d;\n  t.fongmanthai = 0x0e4f;\n  t.forall = 0x2200;\n  t.four = 0x0034;\n  t.fourarabic = 0x0664;\n  t.fourbengali = 0x09ea;\n  t.fourcircle = 0x2463;\n  t.fourcircleinversesansserif = 0x278d;\n  t.fourdeva = 0x096a;\n  t.fourgujarati = 0x0aea;\n  t.fourgurmukhi = 0x0a6a;\n  t.fourhackarabic = 0x0664;\n  t.fourhangzhou = 0x3024;\n  t.fourideographicparen = 0x3223;\n  t.fourinferior = 0x2084;\n  t.fourmonospace = 0xff14;\n  t.fournumeratorbengali = 0x09f7;\n  t.fouroldstyle = 0xf734;\n  t.fourparen = 0x2477;\n  t.fourperiod = 0x248b;\n  t.fourpersian = 0x06f4;\n  t.fourroman = 0x2173;\n  t.foursuperior = 0x2074;\n  t.fourteencircle = 0x246d;\n  t.fourteenparen = 0x2481;\n  t.fourteenperiod = 0x2495;\n  t.fourthai = 0x0e54;\n  t.fourthtonechinese = 0x02cb;\n  t.fparen = 0x24a1;\n  t.fraction = 0x2044;\n  t.franc = 0x20a3;\n  t.g = 0x0067;\n  t.gabengali = 0x0997;\n  t.gacute = 0x01f5;\n  t.gadeva = 0x0917;\n  t.gafarabic = 0x06af;\n  t.gaffinalarabic = 0xfb93;\n  t.gafinitialarabic = 0xfb94;\n  t.gafmedialarabic = 0xfb95;\n  t.gagujarati = 0x0a97;\n  t.gagurmukhi = 0x0a17;\n  t.gahiragana = 0x304c;\n  t.gakatakana = 0x30ac;\n  t.gamma = 0x03b3;\n  t.gammalatinsmall = 0x0263;\n  t.gammasuperior = 0x02e0;\n  t.gangiacoptic = 0x03eb;\n  t.gbopomofo = 0x310d;\n  t.gbreve = 0x011f;\n  t.gcaron = 0x01e7;\n  t.gcedilla = 0x0123;\n  t.gcircle = 0x24d6;\n  t.gcircumflex = 0x011d;\n  t.gcommaaccent = 0x0123;\n  t.gdot = 0x0121;\n  t.gdotaccent = 0x0121;\n  t.gecyrillic = 0x0433;\n  t.gehiragana = 0x3052;\n  t.gekatakana = 0x30b2;\n  t.geometricallyequal = 0x2251;\n  t.gereshaccenthebrew = 0x059c;\n  t.gereshhebrew = 0x05f3;\n  t.gereshmuqdamhebrew = 0x059d;\n  t.germandbls = 0x00df;\n  t.gershayimaccenthebrew = 0x059e;\n  t.gershayimhebrew = 0x05f4;\n  t.getamark = 0x3013;\n  t.ghabengali = 0x0998;\n  t.ghadarmenian = 0x0572;\n  t.ghadeva = 0x0918;\n  t.ghagujarati = 0x0a98;\n  t.ghagurmukhi = 0x0a18;\n  t.ghainarabic = 0x063a;\n  t.ghainfinalarabic = 0xfece;\n  t.ghaininitialarabic = 0xfecf;\n  t.ghainmedialarabic = 0xfed0;\n  t.ghemiddlehookcyrillic = 0x0495;\n  t.ghestrokecyrillic = 0x0493;\n  t.gheupturncyrillic = 0x0491;\n  t.ghhadeva = 0x095a;\n  t.ghhagurmukhi = 0x0a5a;\n  t.ghook = 0x0260;\n  t.ghzsquare = 0x3393;\n  t.gihiragana = 0x304e;\n  t.gikatakana = 0x30ae;\n  t.gimarmenian = 0x0563;\n  t.gimel = 0x05d2;\n  t.gimeldagesh = 0xfb32;\n  t.gimeldageshhebrew = 0xfb32;\n  t.gimelhebrew = 0x05d2;\n  t.gjecyrillic = 0x0453;\n  t.glottalinvertedstroke = 0x01be;\n  t.glottalstop = 0x0294;\n  t.glottalstopinverted = 0x0296;\n  t.glottalstopmod = 0x02c0;\n  t.glottalstopreversed = 0x0295;\n  t.glottalstopreversedmod = 0x02c1;\n  t.glottalstopreversedsuperior = 0x02e4;\n  t.glottalstopstroke = 0x02a1;\n  t.glottalstopstrokereversed = 0x02a2;\n  t.gmacron = 0x1e21;\n  t.gmonospace = 0xff47;\n  t.gohiragana = 0x3054;\n  t.gokatakana = 0x30b4;\n  t.gparen = 0x24a2;\n  t.gpasquare = 0x33ac;\n  t.gradient = 0x2207;\n  t.grave = 0x0060;\n  t.gravebelowcmb = 0x0316;\n  t.gravecmb = 0x0300;\n  t.gravecomb = 0x0300;\n  t.gravedeva = 0x0953;\n  t.gravelowmod = 0x02ce;\n  t.gravemonospace = 0xff40;\n  t.gravetonecmb = 0x0340;\n  t.greater = 0x003e;\n  t.greaterequal = 0x2265;\n  t.greaterequalorless = 0x22db;\n  t.greatermonospace = 0xff1e;\n  t.greaterorequivalent = 0x2273;\n  t.greaterorless = 0x2277;\n  t.greateroverequal = 0x2267;\n  t.greatersmall = 0xfe65;\n  t.gscript = 0x0261;\n  t.gstroke = 0x01e5;\n  t.guhiragana = 0x3050;\n  t.guillemotleft = 0x00ab;\n  t.guillemotright = 0x00bb;\n  t.guilsinglleft = 0x2039;\n  t.guilsinglright = 0x203a;\n  t.gukatakana = 0x30b0;\n  t.guramusquare = 0x3318;\n  t.gysquare = 0x33c9;\n  t.h = 0x0068;\n  t.haabkhasiancyrillic = 0x04a9;\n  t.haaltonearabic = 0x06c1;\n  t.habengali = 0x09b9;\n  t.hadescendercyrillic = 0x04b3;\n  t.hadeva = 0x0939;\n  t.hagujarati = 0x0ab9;\n  t.hagurmukhi = 0x0a39;\n  t.haharabic = 0x062d;\n  t.hahfinalarabic = 0xfea2;\n  t.hahinitialarabic = 0xfea3;\n  t.hahiragana = 0x306f;\n  t.hahmedialarabic = 0xfea4;\n  t.haitusquare = 0x332a;\n  t.hakatakana = 0x30cf;\n  t.hakatakanahalfwidth = 0xff8a;\n  t.halantgurmukhi = 0x0a4d;\n  t.hamzaarabic = 0x0621;\n  t.hamzalowarabic = 0x0621;\n  t.hangulfiller = 0x3164;\n  t.hardsigncyrillic = 0x044a;\n  t.harpoonleftbarbup = 0x21bc;\n  t.harpoonrightbarbup = 0x21c0;\n  t.hasquare = 0x33ca;\n  t.hatafpatah = 0x05b2;\n  t.hatafpatah16 = 0x05b2;\n  t.hatafpatah23 = 0x05b2;\n  t.hatafpatah2f = 0x05b2;\n  t.hatafpatahhebrew = 0x05b2;\n  t.hatafpatahnarrowhebrew = 0x05b2;\n  t.hatafpatahquarterhebrew = 0x05b2;\n  t.hatafpatahwidehebrew = 0x05b2;\n  t.hatafqamats = 0x05b3;\n  t.hatafqamats1b = 0x05b3;\n  t.hatafqamats28 = 0x05b3;\n  t.hatafqamats34 = 0x05b3;\n  t.hatafqamatshebrew = 0x05b3;\n  t.hatafqamatsnarrowhebrew = 0x05b3;\n  t.hatafqamatsquarterhebrew = 0x05b3;\n  t.hatafqamatswidehebrew = 0x05b3;\n  t.hatafsegol = 0x05b1;\n  t.hatafsegol17 = 0x05b1;\n  t.hatafsegol24 = 0x05b1;\n  t.hatafsegol30 = 0x05b1;\n  t.hatafsegolhebrew = 0x05b1;\n  t.hatafsegolnarrowhebrew = 0x05b1;\n  t.hatafsegolquarterhebrew = 0x05b1;\n  t.hatafsegolwidehebrew = 0x05b1;\n  t.hbar = 0x0127;\n  t.hbopomofo = 0x310f;\n  t.hbrevebelow = 0x1e2b;\n  t.hcedilla = 0x1e29;\n  t.hcircle = 0x24d7;\n  t.hcircumflex = 0x0125;\n  t.hdieresis = 0x1e27;\n  t.hdotaccent = 0x1e23;\n  t.hdotbelow = 0x1e25;\n  t.he = 0x05d4;\n  t.heart = 0x2665;\n  t.heartsuitblack = 0x2665;\n  t.heartsuitwhite = 0x2661;\n  t.hedagesh = 0xfb34;\n  t.hedageshhebrew = 0xfb34;\n  t.hehaltonearabic = 0x06c1;\n  t.heharabic = 0x0647;\n  t.hehebrew = 0x05d4;\n  t.hehfinalaltonearabic = 0xfba7;\n  t.hehfinalalttwoarabic = 0xfeea;\n  t.hehfinalarabic = 0xfeea;\n  t.hehhamzaabovefinalarabic = 0xfba5;\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\n  t.hehinitialaltonearabic = 0xfba8;\n  t.hehinitialarabic = 0xfeeb;\n  t.hehiragana = 0x3078;\n  t.hehmedialaltonearabic = 0xfba9;\n  t.hehmedialarabic = 0xfeec;\n  t.heiseierasquare = 0x337b;\n  t.hekatakana = 0x30d8;\n  t.hekatakanahalfwidth = 0xff8d;\n  t.hekutaarusquare = 0x3336;\n  t.henghook = 0x0267;\n  t.herutusquare = 0x3339;\n  t.het = 0x05d7;\n  t.hethebrew = 0x05d7;\n  t.hhook = 0x0266;\n  t.hhooksuperior = 0x02b1;\n  t.hieuhacirclekorean = 0x327b;\n  t.hieuhaparenkorean = 0x321b;\n  t.hieuhcirclekorean = 0x326d;\n  t.hieuhkorean = 0x314e;\n  t.hieuhparenkorean = 0x320d;\n  t.hihiragana = 0x3072;\n  t.hikatakana = 0x30d2;\n  t.hikatakanahalfwidth = 0xff8b;\n  t.hiriq = 0x05b4;\n  t.hiriq14 = 0x05b4;\n  t.hiriq21 = 0x05b4;\n  t.hiriq2d = 0x05b4;\n  t.hiriqhebrew = 0x05b4;\n  t.hiriqnarrowhebrew = 0x05b4;\n  t.hiriqquarterhebrew = 0x05b4;\n  t.hiriqwidehebrew = 0x05b4;\n  t.hlinebelow = 0x1e96;\n  t.hmonospace = 0xff48;\n  t.hoarmenian = 0x0570;\n  t.hohipthai = 0x0e2b;\n  t.hohiragana = 0x307b;\n  t.hokatakana = 0x30db;\n  t.hokatakanahalfwidth = 0xff8e;\n  t.holam = 0x05b9;\n  t.holam19 = 0x05b9;\n  t.holam26 = 0x05b9;\n  t.holam32 = 0x05b9;\n  t.holamhebrew = 0x05b9;\n  t.holamnarrowhebrew = 0x05b9;\n  t.holamquarterhebrew = 0x05b9;\n  t.holamwidehebrew = 0x05b9;\n  t.honokhukthai = 0x0e2e;\n  t.hookabovecomb = 0x0309;\n  t.hookcmb = 0x0309;\n  t.hookpalatalizedbelowcmb = 0x0321;\n  t.hookretroflexbelowcmb = 0x0322;\n  t.hoonsquare = 0x3342;\n  t.horicoptic = 0x03e9;\n  t.horizontalbar = 0x2015;\n  t.horncmb = 0x031b;\n  t.hotsprings = 0x2668;\n  t.house = 0x2302;\n  t.hparen = 0x24a3;\n  t.hsuperior = 0x02b0;\n  t.hturned = 0x0265;\n  t.huhiragana = 0x3075;\n  t.huiitosquare = 0x3333;\n  t.hukatakana = 0x30d5;\n  t.hukatakanahalfwidth = 0xff8c;\n  t.hungarumlaut = 0x02dd;\n  t.hungarumlautcmb = 0x030b;\n  t.hv = 0x0195;\n  t.hyphen = 0x002d;\n  t.hypheninferior = 0xf6e5;\n  t.hyphenmonospace = 0xff0d;\n  t.hyphensmall = 0xfe63;\n  t.hyphensuperior = 0xf6e6;\n  t.hyphentwo = 0x2010;\n  t.i = 0x0069;\n  t.iacute = 0x00ed;\n  t.iacyrillic = 0x044f;\n  t.ibengali = 0x0987;\n  t.ibopomofo = 0x3127;\n  t.ibreve = 0x012d;\n  t.icaron = 0x01d0;\n  t.icircle = 0x24d8;\n  t.icircumflex = 0x00ee;\n  t.icyrillic = 0x0456;\n  t.idblgrave = 0x0209;\n  t.ideographearthcircle = 0x328f;\n  t.ideographfirecircle = 0x328b;\n  t.ideographicallianceparen = 0x323f;\n  t.ideographiccallparen = 0x323a;\n  t.ideographiccentrecircle = 0x32a5;\n  t.ideographicclose = 0x3006;\n  t.ideographiccomma = 0x3001;\n  t.ideographiccommaleft = 0xff64;\n  t.ideographiccongratulationparen = 0x3237;\n  t.ideographiccorrectcircle = 0x32a3;\n  t.ideographicearthparen = 0x322f;\n  t.ideographicenterpriseparen = 0x323d;\n  t.ideographicexcellentcircle = 0x329d;\n  t.ideographicfestivalparen = 0x3240;\n  t.ideographicfinancialcircle = 0x3296;\n  t.ideographicfinancialparen = 0x3236;\n  t.ideographicfireparen = 0x322b;\n  t.ideographichaveparen = 0x3232;\n  t.ideographichighcircle = 0x32a4;\n  t.ideographiciterationmark = 0x3005;\n  t.ideographiclaborcircle = 0x3298;\n  t.ideographiclaborparen = 0x3238;\n  t.ideographicleftcircle = 0x32a7;\n  t.ideographiclowcircle = 0x32a6;\n  t.ideographicmedicinecircle = 0x32a9;\n  t.ideographicmetalparen = 0x322e;\n  t.ideographicmoonparen = 0x322a;\n  t.ideographicnameparen = 0x3234;\n  t.ideographicperiod = 0x3002;\n  t.ideographicprintcircle = 0x329e;\n  t.ideographicreachparen = 0x3243;\n  t.ideographicrepresentparen = 0x3239;\n  t.ideographicresourceparen = 0x323e;\n  t.ideographicrightcircle = 0x32a8;\n  t.ideographicsecretcircle = 0x3299;\n  t.ideographicselfparen = 0x3242;\n  t.ideographicsocietyparen = 0x3233;\n  t.ideographicspace = 0x3000;\n  t.ideographicspecialparen = 0x3235;\n  t.ideographicstockparen = 0x3231;\n  t.ideographicstudyparen = 0x323b;\n  t.ideographicsunparen = 0x3230;\n  t.ideographicsuperviseparen = 0x323c;\n  t.ideographicwaterparen = 0x322c;\n  t.ideographicwoodparen = 0x322d;\n  t.ideographiczero = 0x3007;\n  t.ideographmetalcircle = 0x328e;\n  t.ideographmooncircle = 0x328a;\n  t.ideographnamecircle = 0x3294;\n  t.ideographsuncircle = 0x3290;\n  t.ideographwatercircle = 0x328c;\n  t.ideographwoodcircle = 0x328d;\n  t.ideva = 0x0907;\n  t.idieresis = 0x00ef;\n  t.idieresisacute = 0x1e2f;\n  t.idieresiscyrillic = 0x04e5;\n  t.idotbelow = 0x1ecb;\n  t.iebrevecyrillic = 0x04d7;\n  t.iecyrillic = 0x0435;\n  t.ieungacirclekorean = 0x3275;\n  t.ieungaparenkorean = 0x3215;\n  t.ieungcirclekorean = 0x3267;\n  t.ieungkorean = 0x3147;\n  t.ieungparenkorean = 0x3207;\n  t.igrave = 0x00ec;\n  t.igujarati = 0x0a87;\n  t.igurmukhi = 0x0a07;\n  t.ihiragana = 0x3044;\n  t.ihookabove = 0x1ec9;\n  t.iibengali = 0x0988;\n  t.iicyrillic = 0x0438;\n  t.iideva = 0x0908;\n  t.iigujarati = 0x0a88;\n  t.iigurmukhi = 0x0a08;\n  t.iimatragurmukhi = 0x0a40;\n  t.iinvertedbreve = 0x020b;\n  t.iishortcyrillic = 0x0439;\n  t.iivowelsignbengali = 0x09c0;\n  t.iivowelsigndeva = 0x0940;\n  t.iivowelsigngujarati = 0x0ac0;\n  t.ij = 0x0133;\n  t.ikatakana = 0x30a4;\n  t.ikatakanahalfwidth = 0xff72;\n  t.ikorean = 0x3163;\n  t.ilde = 0x02dc;\n  t.iluyhebrew = 0x05ac;\n  t.imacron = 0x012b;\n  t.imacroncyrillic = 0x04e3;\n  t.imageorapproximatelyequal = 0x2253;\n  t.imatragurmukhi = 0x0a3f;\n  t.imonospace = 0xff49;\n  t.increment = 0x2206;\n  t.infinity = 0x221e;\n  t.iniarmenian = 0x056b;\n  t.integral = 0x222b;\n  t.integralbottom = 0x2321;\n  t.integralbt = 0x2321;\n  t.integralex = 0xf8f5;\n  t.integraltop = 0x2320;\n  t.integraltp = 0x2320;\n  t.intersection = 0x2229;\n  t.intisquare = 0x3305;\n  t.invbullet = 0x25d8;\n  t.invcircle = 0x25d9;\n  t.invsmileface = 0x263b;\n  t.iocyrillic = 0x0451;\n  t.iogonek = 0x012f;\n  t.iota = 0x03b9;\n  t.iotadieresis = 0x03ca;\n  t.iotadieresistonos = 0x0390;\n  t.iotalatin = 0x0269;\n  t.iotatonos = 0x03af;\n  t.iparen = 0x24a4;\n  t.irigurmukhi = 0x0a72;\n  t.ismallhiragana = 0x3043;\n  t.ismallkatakana = 0x30a3;\n  t.ismallkatakanahalfwidth = 0xff68;\n  t.issharbengali = 0x09fa;\n  t.istroke = 0x0268;\n  t.isuperior = 0xf6ed;\n  t.iterationhiragana = 0x309d;\n  t.iterationkatakana = 0x30fd;\n  t.itilde = 0x0129;\n  t.itildebelow = 0x1e2d;\n  t.iubopomofo = 0x3129;\n  t.iucyrillic = 0x044e;\n  t.ivowelsignbengali = 0x09bf;\n  t.ivowelsigndeva = 0x093f;\n  t.ivowelsigngujarati = 0x0abf;\n  t.izhitsacyrillic = 0x0475;\n  t.izhitsadblgravecyrillic = 0x0477;\n  t.j = 0x006a;\n  t.jaarmenian = 0x0571;\n  t.jabengali = 0x099c;\n  t.jadeva = 0x091c;\n  t.jagujarati = 0x0a9c;\n  t.jagurmukhi = 0x0a1c;\n  t.jbopomofo = 0x3110;\n  t.jcaron = 0x01f0;\n  t.jcircle = 0x24d9;\n  t.jcircumflex = 0x0135;\n  t.jcrossedtail = 0x029d;\n  t.jdotlessstroke = 0x025f;\n  t.jecyrillic = 0x0458;\n  t.jeemarabic = 0x062c;\n  t.jeemfinalarabic = 0xfe9e;\n  t.jeeminitialarabic = 0xfe9f;\n  t.jeemmedialarabic = 0xfea0;\n  t.jeharabic = 0x0698;\n  t.jehfinalarabic = 0xfb8b;\n  t.jhabengali = 0x099d;\n  t.jhadeva = 0x091d;\n  t.jhagujarati = 0x0a9d;\n  t.jhagurmukhi = 0x0a1d;\n  t.jheharmenian = 0x057b;\n  t.jis = 0x3004;\n  t.jmonospace = 0xff4a;\n  t.jparen = 0x24a5;\n  t.jsuperior = 0x02b2;\n  t.k = 0x006b;\n  t.kabashkircyrillic = 0x04a1;\n  t.kabengali = 0x0995;\n  t.kacute = 0x1e31;\n  t.kacyrillic = 0x043a;\n  t.kadescendercyrillic = 0x049b;\n  t.kadeva = 0x0915;\n  t.kaf = 0x05db;\n  t.kafarabic = 0x0643;\n  t.kafdagesh = 0xfb3b;\n  t.kafdageshhebrew = 0xfb3b;\n  t.kaffinalarabic = 0xfeda;\n  t.kafhebrew = 0x05db;\n  t.kafinitialarabic = 0xfedb;\n  t.kafmedialarabic = 0xfedc;\n  t.kafrafehebrew = 0xfb4d;\n  t.kagujarati = 0x0a95;\n  t.kagurmukhi = 0x0a15;\n  t.kahiragana = 0x304b;\n  t.kahookcyrillic = 0x04c4;\n  t.kakatakana = 0x30ab;\n  t.kakatakanahalfwidth = 0xff76;\n  t.kappa = 0x03ba;\n  t.kappasymbolgreek = 0x03f0;\n  t.kapyeounmieumkorean = 0x3171;\n  t.kapyeounphieuphkorean = 0x3184;\n  t.kapyeounpieupkorean = 0x3178;\n  t.kapyeounssangpieupkorean = 0x3179;\n  t.karoriisquare = 0x330d;\n  t.kashidaautoarabic = 0x0640;\n  t.kashidaautonosidebearingarabic = 0x0640;\n  t.kasmallkatakana = 0x30f5;\n  t.kasquare = 0x3384;\n  t.kasraarabic = 0x0650;\n  t.kasratanarabic = 0x064d;\n  t.kastrokecyrillic = 0x049f;\n  t.katahiraprolongmarkhalfwidth = 0xff70;\n  t.kaverticalstrokecyrillic = 0x049d;\n  t.kbopomofo = 0x310e;\n  t.kcalsquare = 0x3389;\n  t.kcaron = 0x01e9;\n  t.kcedilla = 0x0137;\n  t.kcircle = 0x24da;\n  t.kcommaaccent = 0x0137;\n  t.kdotbelow = 0x1e33;\n  t.keharmenian = 0x0584;\n  t.kehiragana = 0x3051;\n  t.kekatakana = 0x30b1;\n  t.kekatakanahalfwidth = 0xff79;\n  t.kenarmenian = 0x056f;\n  t.kesmallkatakana = 0x30f6;\n  t.kgreenlandic = 0x0138;\n  t.khabengali = 0x0996;\n  t.khacyrillic = 0x0445;\n  t.khadeva = 0x0916;\n  t.khagujarati = 0x0a96;\n  t.khagurmukhi = 0x0a16;\n  t.khaharabic = 0x062e;\n  t.khahfinalarabic = 0xfea6;\n  t.khahinitialarabic = 0xfea7;\n  t.khahmedialarabic = 0xfea8;\n  t.kheicoptic = 0x03e7;\n  t.khhadeva = 0x0959;\n  t.khhagurmukhi = 0x0a59;\n  t.khieukhacirclekorean = 0x3278;\n  t.khieukhaparenkorean = 0x3218;\n  t.khieukhcirclekorean = 0x326a;\n  t.khieukhkorean = 0x314b;\n  t.khieukhparenkorean = 0x320a;\n  t.khokhaithai = 0x0e02;\n  t.khokhonthai = 0x0e05;\n  t.khokhuatthai = 0x0e03;\n  t.khokhwaithai = 0x0e04;\n  t.khomutthai = 0x0e5b;\n  t.khook = 0x0199;\n  t.khorakhangthai = 0x0e06;\n  t.khzsquare = 0x3391;\n  t.kihiragana = 0x304d;\n  t.kikatakana = 0x30ad;\n  t.kikatakanahalfwidth = 0xff77;\n  t.kiroguramusquare = 0x3315;\n  t.kiromeetorusquare = 0x3316;\n  t.kirosquare = 0x3314;\n  t.kiyeokacirclekorean = 0x326e;\n  t.kiyeokaparenkorean = 0x320e;\n  t.kiyeokcirclekorean = 0x3260;\n  t.kiyeokkorean = 0x3131;\n  t.kiyeokparenkorean = 0x3200;\n  t.kiyeoksioskorean = 0x3133;\n  t.kjecyrillic = 0x045c;\n  t.klinebelow = 0x1e35;\n  t.klsquare = 0x3398;\n  t.kmcubedsquare = 0x33a6;\n  t.kmonospace = 0xff4b;\n  t.kmsquaredsquare = 0x33a2;\n  t.kohiragana = 0x3053;\n  t.kohmsquare = 0x33c0;\n  t.kokaithai = 0x0e01;\n  t.kokatakana = 0x30b3;\n  t.kokatakanahalfwidth = 0xff7a;\n  t.kooposquare = 0x331e;\n  t.koppacyrillic = 0x0481;\n  t.koreanstandardsymbol = 0x327f;\n  t.koroniscmb = 0x0343;\n  t.kparen = 0x24a6;\n  t.kpasquare = 0x33aa;\n  t.ksicyrillic = 0x046f;\n  t.ktsquare = 0x33cf;\n  t.kturned = 0x029e;\n  t.kuhiragana = 0x304f;\n  t.kukatakana = 0x30af;\n  t.kukatakanahalfwidth = 0xff78;\n  t.kvsquare = 0x33b8;\n  t.kwsquare = 0x33be;\n  t.l = 0x006c;\n  t.labengali = 0x09b2;\n  t.lacute = 0x013a;\n  t.ladeva = 0x0932;\n  t.lagujarati = 0x0ab2;\n  t.lagurmukhi = 0x0a32;\n  t.lakkhangyaothai = 0x0e45;\n  t.lamaleffinalarabic = 0xfefc;\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\n  t.lamalefisolatedarabic = 0xfefb;\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n  t.lamarabic = 0x0644;\n  t.lambda = 0x03bb;\n  t.lambdastroke = 0x019b;\n  t.lamed = 0x05dc;\n  t.lameddagesh = 0xfb3c;\n  t.lameddageshhebrew = 0xfb3c;\n  t.lamedhebrew = 0x05dc;\n  t.lamfinalarabic = 0xfede;\n  t.lamhahinitialarabic = 0xfcca;\n  t.laminitialarabic = 0xfedf;\n  t.lamjeeminitialarabic = 0xfcc9;\n  t.lamkhahinitialarabic = 0xfccb;\n  t.lamlamhehisolatedarabic = 0xfdf2;\n  t.lammedialarabic = 0xfee0;\n  t.lammeemhahinitialarabic = 0xfd88;\n  t.lammeeminitialarabic = 0xfccc;\n  t.largecircle = 0x25ef;\n  t.lbar = 0x019a;\n  t.lbelt = 0x026c;\n  t.lbopomofo = 0x310c;\n  t.lcaron = 0x013e;\n  t.lcedilla = 0x013c;\n  t.lcircle = 0x24db;\n  t.lcircumflexbelow = 0x1e3d;\n  t.lcommaaccent = 0x013c;\n  t.ldot = 0x0140;\n  t.ldotaccent = 0x0140;\n  t.ldotbelow = 0x1e37;\n  t.ldotbelowmacron = 0x1e39;\n  t.leftangleabovecmb = 0x031a;\n  t.lefttackbelowcmb = 0x0318;\n  t.less = 0x003c;\n  t.lessequal = 0x2264;\n  t.lessequalorgreater = 0x22da;\n  t.lessmonospace = 0xff1c;\n  t.lessorequivalent = 0x2272;\n  t.lessorgreater = 0x2276;\n  t.lessoverequal = 0x2266;\n  t.lesssmall = 0xfe64;\n  t.lezh = 0x026e;\n  t.lfblock = 0x258c;\n  t.lhookretroflex = 0x026d;\n  t.lira = 0x20a4;\n  t.liwnarmenian = 0x056c;\n  t.lj = 0x01c9;\n  t.ljecyrillic = 0x0459;\n  t.ll = 0xf6c0;\n  t.lladeva = 0x0933;\n  t.llagujarati = 0x0ab3;\n  t.llinebelow = 0x1e3b;\n  t.llladeva = 0x0934;\n  t.llvocalicbengali = 0x09e1;\n  t.llvocalicdeva = 0x0961;\n  t.llvocalicvowelsignbengali = 0x09e3;\n  t.llvocalicvowelsigndeva = 0x0963;\n  t.lmiddletilde = 0x026b;\n  t.lmonospace = 0xff4c;\n  t.lmsquare = 0x33d0;\n  t.lochulathai = 0x0e2c;\n  t.logicaland = 0x2227;\n  t.logicalnot = 0x00ac;\n  t.logicalnotreversed = 0x2310;\n  t.logicalor = 0x2228;\n  t.lolingthai = 0x0e25;\n  t.longs = 0x017f;\n  t.lowlinecenterline = 0xfe4e;\n  t.lowlinecmb = 0x0332;\n  t.lowlinedashed = 0xfe4d;\n  t.lozenge = 0x25ca;\n  t.lparen = 0x24a7;\n  t.lslash = 0x0142;\n  t.lsquare = 0x2113;\n  t.lsuperior = 0xf6ee;\n  t.ltshade = 0x2591;\n  t.luthai = 0x0e26;\n  t.lvocalicbengali = 0x098c;\n  t.lvocalicdeva = 0x090c;\n  t.lvocalicvowelsignbengali = 0x09e2;\n  t.lvocalicvowelsigndeva = 0x0962;\n  t.lxsquare = 0x33d3;\n  t.m = 0x006d;\n  t.mabengali = 0x09ae;\n  t.macron = 0x00af;\n  t.macronbelowcmb = 0x0331;\n  t.macroncmb = 0x0304;\n  t.macronlowmod = 0x02cd;\n  t.macronmonospace = 0xffe3;\n  t.macute = 0x1e3f;\n  t.madeva = 0x092e;\n  t.magujarati = 0x0aae;\n  t.magurmukhi = 0x0a2e;\n  t.mahapakhhebrew = 0x05a4;\n  t.mahapakhlefthebrew = 0x05a4;\n  t.mahiragana = 0x307e;\n  t.maichattawalowleftthai = 0xf895;\n  t.maichattawalowrightthai = 0xf894;\n  t.maichattawathai = 0x0e4b;\n  t.maichattawaupperleftthai = 0xf893;\n  t.maieklowleftthai = 0xf88c;\n  t.maieklowrightthai = 0xf88b;\n  t.maiekthai = 0x0e48;\n  t.maiekupperleftthai = 0xf88a;\n  t.maihanakatleftthai = 0xf884;\n  t.maihanakatthai = 0x0e31;\n  t.maitaikhuleftthai = 0xf889;\n  t.maitaikhuthai = 0x0e47;\n  t.maitholowleftthai = 0xf88f;\n  t.maitholowrightthai = 0xf88e;\n  t.maithothai = 0x0e49;\n  t.maithoupperleftthai = 0xf88d;\n  t.maitrilowleftthai = 0xf892;\n  t.maitrilowrightthai = 0xf891;\n  t.maitrithai = 0x0e4a;\n  t.maitriupperleftthai = 0xf890;\n  t.maiyamokthai = 0x0e46;\n  t.makatakana = 0x30de;\n  t.makatakanahalfwidth = 0xff8f;\n  t.male = 0x2642;\n  t.mansyonsquare = 0x3347;\n  t.maqafhebrew = 0x05be;\n  t.mars = 0x2642;\n  t.masoracirclehebrew = 0x05af;\n  t.masquare = 0x3383;\n  t.mbopomofo = 0x3107;\n  t.mbsquare = 0x33d4;\n  t.mcircle = 0x24dc;\n  t.mcubedsquare = 0x33a5;\n  t.mdotaccent = 0x1e41;\n  t.mdotbelow = 0x1e43;\n  t.meemarabic = 0x0645;\n  t.meemfinalarabic = 0xfee2;\n  t.meeminitialarabic = 0xfee3;\n  t.meemmedialarabic = 0xfee4;\n  t.meemmeeminitialarabic = 0xfcd1;\n  t.meemmeemisolatedarabic = 0xfc48;\n  t.meetorusquare = 0x334d;\n  t.mehiragana = 0x3081;\n  t.meizierasquare = 0x337e;\n  t.mekatakana = 0x30e1;\n  t.mekatakanahalfwidth = 0xff92;\n  t.mem = 0x05de;\n  t.memdagesh = 0xfb3e;\n  t.memdageshhebrew = 0xfb3e;\n  t.memhebrew = 0x05de;\n  t.menarmenian = 0x0574;\n  t.merkhahebrew = 0x05a5;\n  t.merkhakefulahebrew = 0x05a6;\n  t.merkhakefulalefthebrew = 0x05a6;\n  t.merkhalefthebrew = 0x05a5;\n  t.mhook = 0x0271;\n  t.mhzsquare = 0x3392;\n  t.middledotkatakanahalfwidth = 0xff65;\n  t.middot = 0x00b7;\n  t.mieumacirclekorean = 0x3272;\n  t.mieumaparenkorean = 0x3212;\n  t.mieumcirclekorean = 0x3264;\n  t.mieumkorean = 0x3141;\n  t.mieumpansioskorean = 0x3170;\n  t.mieumparenkorean = 0x3204;\n  t.mieumpieupkorean = 0x316e;\n  t.mieumsioskorean = 0x316f;\n  t.mihiragana = 0x307f;\n  t.mikatakana = 0x30df;\n  t.mikatakanahalfwidth = 0xff90;\n  t.minus = 0x2212;\n  t.minusbelowcmb = 0x0320;\n  t.minuscircle = 0x2296;\n  t.minusmod = 0x02d7;\n  t.minusplus = 0x2213;\n  t.minute = 0x2032;\n  t.miribaarusquare = 0x334a;\n  t.mirisquare = 0x3349;\n  t.mlonglegturned = 0x0270;\n  t.mlsquare = 0x3396;\n  t.mmcubedsquare = 0x33a3;\n  t.mmonospace = 0xff4d;\n  t.mmsquaredsquare = 0x339f;\n  t.mohiragana = 0x3082;\n  t.mohmsquare = 0x33c1;\n  t.mokatakana = 0x30e2;\n  t.mokatakanahalfwidth = 0xff93;\n  t.molsquare = 0x33d6;\n  t.momathai = 0x0e21;\n  t.moverssquare = 0x33a7;\n  t.moverssquaredsquare = 0x33a8;\n  t.mparen = 0x24a8;\n  t.mpasquare = 0x33ab;\n  t.mssquare = 0x33b3;\n  t.msuperior = 0xf6ef;\n  t.mturned = 0x026f;\n  t.mu = 0x00b5;\n  t.mu1 = 0x00b5;\n  t.muasquare = 0x3382;\n  t.muchgreater = 0x226b;\n  t.muchless = 0x226a;\n  t.mufsquare = 0x338c;\n  t.mugreek = 0x03bc;\n  t.mugsquare = 0x338d;\n  t.muhiragana = 0x3080;\n  t.mukatakana = 0x30e0;\n  t.mukatakanahalfwidth = 0xff91;\n  t.mulsquare = 0x3395;\n  t.multiply = 0x00d7;\n  t.mumsquare = 0x339b;\n  t.munahhebrew = 0x05a3;\n  t.munahlefthebrew = 0x05a3;\n  t.musicalnote = 0x266a;\n  t.musicalnotedbl = 0x266b;\n  t.musicflatsign = 0x266d;\n  t.musicsharpsign = 0x266f;\n  t.mussquare = 0x33b2;\n  t.muvsquare = 0x33b6;\n  t.muwsquare = 0x33bc;\n  t.mvmegasquare = 0x33b9;\n  t.mvsquare = 0x33b7;\n  t.mwmegasquare = 0x33bf;\n  t.mwsquare = 0x33bd;\n  t.n = 0x006e;\n  t.nabengali = 0x09a8;\n  t.nabla = 0x2207;\n  t.nacute = 0x0144;\n  t.nadeva = 0x0928;\n  t.nagujarati = 0x0aa8;\n  t.nagurmukhi = 0x0a28;\n  t.nahiragana = 0x306a;\n  t.nakatakana = 0x30ca;\n  t.nakatakanahalfwidth = 0xff85;\n  t.napostrophe = 0x0149;\n  t.nasquare = 0x3381;\n  t.nbopomofo = 0x310b;\n  t.nbspace = 0x00a0;\n  t.ncaron = 0x0148;\n  t.ncedilla = 0x0146;\n  t.ncircle = 0x24dd;\n  t.ncircumflexbelow = 0x1e4b;\n  t.ncommaaccent = 0x0146;\n  t.ndotaccent = 0x1e45;\n  t.ndotbelow = 0x1e47;\n  t.nehiragana = 0x306d;\n  t.nekatakana = 0x30cd;\n  t.nekatakanahalfwidth = 0xff88;\n  t.newsheqelsign = 0x20aa;\n  t.nfsquare = 0x338b;\n  t.ngabengali = 0x0999;\n  t.ngadeva = 0x0919;\n  t.ngagujarati = 0x0a99;\n  t.ngagurmukhi = 0x0a19;\n  t.ngonguthai = 0x0e07;\n  t.nhiragana = 0x3093;\n  t.nhookleft = 0x0272;\n  t.nhookretroflex = 0x0273;\n  t.nieunacirclekorean = 0x326f;\n  t.nieunaparenkorean = 0x320f;\n  t.nieuncieuckorean = 0x3135;\n  t.nieuncirclekorean = 0x3261;\n  t.nieunhieuhkorean = 0x3136;\n  t.nieunkorean = 0x3134;\n  t.nieunpansioskorean = 0x3168;\n  t.nieunparenkorean = 0x3201;\n  t.nieunsioskorean = 0x3167;\n  t.nieuntikeutkorean = 0x3166;\n  t.nihiragana = 0x306b;\n  t.nikatakana = 0x30cb;\n  t.nikatakanahalfwidth = 0xff86;\n  t.nikhahitleftthai = 0xf899;\n  t.nikhahitthai = 0x0e4d;\n  t.nine = 0x0039;\n  t.ninearabic = 0x0669;\n  t.ninebengali = 0x09ef;\n  t.ninecircle = 0x2468;\n  t.ninecircleinversesansserif = 0x2792;\n  t.ninedeva = 0x096f;\n  t.ninegujarati = 0x0aef;\n  t.ninegurmukhi = 0x0a6f;\n  t.ninehackarabic = 0x0669;\n  t.ninehangzhou = 0x3029;\n  t.nineideographicparen = 0x3228;\n  t.nineinferior = 0x2089;\n  t.ninemonospace = 0xff19;\n  t.nineoldstyle = 0xf739;\n  t.nineparen = 0x247c;\n  t.nineperiod = 0x2490;\n  t.ninepersian = 0x06f9;\n  t.nineroman = 0x2178;\n  t.ninesuperior = 0x2079;\n  t.nineteencircle = 0x2472;\n  t.nineteenparen = 0x2486;\n  t.nineteenperiod = 0x249a;\n  t.ninethai = 0x0e59;\n  t.nj = 0x01cc;\n  t.njecyrillic = 0x045a;\n  t.nkatakana = 0x30f3;\n  t.nkatakanahalfwidth = 0xff9d;\n  t.nlegrightlong = 0x019e;\n  t.nlinebelow = 0x1e49;\n  t.nmonospace = 0xff4e;\n  t.nmsquare = 0x339a;\n  t.nnabengali = 0x09a3;\n  t.nnadeva = 0x0923;\n  t.nnagujarati = 0x0aa3;\n  t.nnagurmukhi = 0x0a23;\n  t.nnnadeva = 0x0929;\n  t.nohiragana = 0x306e;\n  t.nokatakana = 0x30ce;\n  t.nokatakanahalfwidth = 0xff89;\n  t.nonbreakingspace = 0x00a0;\n  t.nonenthai = 0x0e13;\n  t.nonuthai = 0x0e19;\n  t.noonarabic = 0x0646;\n  t.noonfinalarabic = 0xfee6;\n  t.noonghunnaarabic = 0x06ba;\n  t.noonghunnafinalarabic = 0xfb9f;\n  t.nooninitialarabic = 0xfee7;\n  t.noonjeeminitialarabic = 0xfcd2;\n  t.noonjeemisolatedarabic = 0xfc4b;\n  t.noonmedialarabic = 0xfee8;\n  t.noonmeeminitialarabic = 0xfcd5;\n  t.noonmeemisolatedarabic = 0xfc4e;\n  t.noonnoonfinalarabic = 0xfc8d;\n  t.notcontains = 0x220c;\n  t.notelement = 0x2209;\n  t.notelementof = 0x2209;\n  t.notequal = 0x2260;\n  t.notgreater = 0x226f;\n  t.notgreaternorequal = 0x2271;\n  t.notgreaternorless = 0x2279;\n  t.notidentical = 0x2262;\n  t.notless = 0x226e;\n  t.notlessnorequal = 0x2270;\n  t.notparallel = 0x2226;\n  t.notprecedes = 0x2280;\n  t.notsubset = 0x2284;\n  t.notsucceeds = 0x2281;\n  t.notsuperset = 0x2285;\n  t.nowarmenian = 0x0576;\n  t.nparen = 0x24a9;\n  t.nssquare = 0x33b1;\n  t.nsuperior = 0x207f;\n  t.ntilde = 0x00f1;\n  t.nu = 0x03bd;\n  t.nuhiragana = 0x306c;\n  t.nukatakana = 0x30cc;\n  t.nukatakanahalfwidth = 0xff87;\n  t.nuktabengali = 0x09bc;\n  t.nuktadeva = 0x093c;\n  t.nuktagujarati = 0x0abc;\n  t.nuktagurmukhi = 0x0a3c;\n  t.numbersign = 0x0023;\n  t.numbersignmonospace = 0xff03;\n  t.numbersignsmall = 0xfe5f;\n  t.numeralsigngreek = 0x0374;\n  t.numeralsignlowergreek = 0x0375;\n  t.numero = 0x2116;\n  t.nun = 0x05e0;\n  t.nundagesh = 0xfb40;\n  t.nundageshhebrew = 0xfb40;\n  t.nunhebrew = 0x05e0;\n  t.nvsquare = 0x33b5;\n  t.nwsquare = 0x33bb;\n  t.nyabengali = 0x099e;\n  t.nyadeva = 0x091e;\n  t.nyagujarati = 0x0a9e;\n  t.nyagurmukhi = 0x0a1e;\n  t.o = 0x006f;\n  t.oacute = 0x00f3;\n  t.oangthai = 0x0e2d;\n  t.obarred = 0x0275;\n  t.obarredcyrillic = 0x04e9;\n  t.obarreddieresiscyrillic = 0x04eb;\n  t.obengali = 0x0993;\n  t.obopomofo = 0x311b;\n  t.obreve = 0x014f;\n  t.ocandradeva = 0x0911;\n  t.ocandragujarati = 0x0a91;\n  t.ocandravowelsigndeva = 0x0949;\n  t.ocandravowelsigngujarati = 0x0ac9;\n  t.ocaron = 0x01d2;\n  t.ocircle = 0x24de;\n  t.ocircumflex = 0x00f4;\n  t.ocircumflexacute = 0x1ed1;\n  t.ocircumflexdotbelow = 0x1ed9;\n  t.ocircumflexgrave = 0x1ed3;\n  t.ocircumflexhookabove = 0x1ed5;\n  t.ocircumflextilde = 0x1ed7;\n  t.ocyrillic = 0x043e;\n  t.odblacute = 0x0151;\n  t.odblgrave = 0x020d;\n  t.odeva = 0x0913;\n  t.odieresis = 0x00f6;\n  t.odieresiscyrillic = 0x04e7;\n  t.odotbelow = 0x1ecd;\n  t.oe = 0x0153;\n  t.oekorean = 0x315a;\n  t.ogonek = 0x02db;\n  t.ogonekcmb = 0x0328;\n  t.ograve = 0x00f2;\n  t.ogujarati = 0x0a93;\n  t.oharmenian = 0x0585;\n  t.ohiragana = 0x304a;\n  t.ohookabove = 0x1ecf;\n  t.ohorn = 0x01a1;\n  t.ohornacute = 0x1edb;\n  t.ohorndotbelow = 0x1ee3;\n  t.ohorngrave = 0x1edd;\n  t.ohornhookabove = 0x1edf;\n  t.ohorntilde = 0x1ee1;\n  t.ohungarumlaut = 0x0151;\n  t.oi = 0x01a3;\n  t.oinvertedbreve = 0x020f;\n  t.okatakana = 0x30aa;\n  t.okatakanahalfwidth = 0xff75;\n  t.okorean = 0x3157;\n  t.olehebrew = 0x05ab;\n  t.omacron = 0x014d;\n  t.omacronacute = 0x1e53;\n  t.omacrongrave = 0x1e51;\n  t.omdeva = 0x0950;\n  t.omega = 0x03c9;\n  t.omega1 = 0x03d6;\n  t.omegacyrillic = 0x0461;\n  t.omegalatinclosed = 0x0277;\n  t.omegaroundcyrillic = 0x047b;\n  t.omegatitlocyrillic = 0x047d;\n  t.omegatonos = 0x03ce;\n  t.omgujarati = 0x0ad0;\n  t.omicron = 0x03bf;\n  t.omicrontonos = 0x03cc;\n  t.omonospace = 0xff4f;\n  t.one = 0x0031;\n  t.onearabic = 0x0661;\n  t.onebengali = 0x09e7;\n  t.onecircle = 0x2460;\n  t.onecircleinversesansserif = 0x278a;\n  t.onedeva = 0x0967;\n  t.onedotenleader = 0x2024;\n  t.oneeighth = 0x215b;\n  t.onefitted = 0xf6dc;\n  t.onegujarati = 0x0ae7;\n  t.onegurmukhi = 0x0a67;\n  t.onehackarabic = 0x0661;\n  t.onehalf = 0x00bd;\n  t.onehangzhou = 0x3021;\n  t.oneideographicparen = 0x3220;\n  t.oneinferior = 0x2081;\n  t.onemonospace = 0xff11;\n  t.onenumeratorbengali = 0x09f4;\n  t.oneoldstyle = 0xf731;\n  t.oneparen = 0x2474;\n  t.oneperiod = 0x2488;\n  t.onepersian = 0x06f1;\n  t.onequarter = 0x00bc;\n  t.oneroman = 0x2170;\n  t.onesuperior = 0x00b9;\n  t.onethai = 0x0e51;\n  t.onethird = 0x2153;\n  t.oogonek = 0x01eb;\n  t.oogonekmacron = 0x01ed;\n  t.oogurmukhi = 0x0a13;\n  t.oomatragurmukhi = 0x0a4b;\n  t.oopen = 0x0254;\n  t.oparen = 0x24aa;\n  t.openbullet = 0x25e6;\n  t.option = 0x2325;\n  t.ordfeminine = 0x00aa;\n  t.ordmasculine = 0x00ba;\n  t.orthogonal = 0x221f;\n  t.oshortdeva = 0x0912;\n  t.oshortvowelsigndeva = 0x094a;\n  t.oslash = 0x00f8;\n  t.oslashacute = 0x01ff;\n  t.osmallhiragana = 0x3049;\n  t.osmallkatakana = 0x30a9;\n  t.osmallkatakanahalfwidth = 0xff6b;\n  t.ostrokeacute = 0x01ff;\n  t.osuperior = 0xf6f0;\n  t.otcyrillic = 0x047f;\n  t.otilde = 0x00f5;\n  t.otildeacute = 0x1e4d;\n  t.otildedieresis = 0x1e4f;\n  t.oubopomofo = 0x3121;\n  t.overline = 0x203e;\n  t.overlinecenterline = 0xfe4a;\n  t.overlinecmb = 0x0305;\n  t.overlinedashed = 0xfe49;\n  t.overlinedblwavy = 0xfe4c;\n  t.overlinewavy = 0xfe4b;\n  t.overscore = 0x00af;\n  t.ovowelsignbengali = 0x09cb;\n  t.ovowelsigndeva = 0x094b;\n  t.ovowelsigngujarati = 0x0acb;\n  t.p = 0x0070;\n  t.paampssquare = 0x3380;\n  t.paasentosquare = 0x332b;\n  t.pabengali = 0x09aa;\n  t.pacute = 0x1e55;\n  t.padeva = 0x092a;\n  t.pagedown = 0x21df;\n  t.pageup = 0x21de;\n  t.pagujarati = 0x0aaa;\n  t.pagurmukhi = 0x0a2a;\n  t.pahiragana = 0x3071;\n  t.paiyannoithai = 0x0e2f;\n  t.pakatakana = 0x30d1;\n  t.palatalizationcyrilliccmb = 0x0484;\n  t.palochkacyrillic = 0x04c0;\n  t.pansioskorean = 0x317f;\n  t.paragraph = 0x00b6;\n  t.parallel = 0x2225;\n  t.parenleft = 0x0028;\n  t.parenleftaltonearabic = 0xfd3e;\n  t.parenleftbt = 0xf8ed;\n  t.parenleftex = 0xf8ec;\n  t.parenleftinferior = 0x208d;\n  t.parenleftmonospace = 0xff08;\n  t.parenleftsmall = 0xfe59;\n  t.parenleftsuperior = 0x207d;\n  t.parenlefttp = 0xf8eb;\n  t.parenleftvertical = 0xfe35;\n  t.parenright = 0x0029;\n  t.parenrightaltonearabic = 0xfd3f;\n  t.parenrightbt = 0xf8f8;\n  t.parenrightex = 0xf8f7;\n  t.parenrightinferior = 0x208e;\n  t.parenrightmonospace = 0xff09;\n  t.parenrightsmall = 0xfe5a;\n  t.parenrightsuperior = 0x207e;\n  t.parenrighttp = 0xf8f6;\n  t.parenrightvertical = 0xfe36;\n  t.partialdiff = 0x2202;\n  t.paseqhebrew = 0x05c0;\n  t.pashtahebrew = 0x0599;\n  t.pasquare = 0x33a9;\n  t.patah = 0x05b7;\n  t.patah11 = 0x05b7;\n  t.patah1d = 0x05b7;\n  t.patah2a = 0x05b7;\n  t.patahhebrew = 0x05b7;\n  t.patahnarrowhebrew = 0x05b7;\n  t.patahquarterhebrew = 0x05b7;\n  t.patahwidehebrew = 0x05b7;\n  t.pazerhebrew = 0x05a1;\n  t.pbopomofo = 0x3106;\n  t.pcircle = 0x24df;\n  t.pdotaccent = 0x1e57;\n  t.pe = 0x05e4;\n  t.pecyrillic = 0x043f;\n  t.pedagesh = 0xfb44;\n  t.pedageshhebrew = 0xfb44;\n  t.peezisquare = 0x333b;\n  t.pefinaldageshhebrew = 0xfb43;\n  t.peharabic = 0x067e;\n  t.peharmenian = 0x057a;\n  t.pehebrew = 0x05e4;\n  t.pehfinalarabic = 0xfb57;\n  t.pehinitialarabic = 0xfb58;\n  t.pehiragana = 0x307a;\n  t.pehmedialarabic = 0xfb59;\n  t.pekatakana = 0x30da;\n  t.pemiddlehookcyrillic = 0x04a7;\n  t.perafehebrew = 0xfb4e;\n  t.percent = 0x0025;\n  t.percentarabic = 0x066a;\n  t.percentmonospace = 0xff05;\n  t.percentsmall = 0xfe6a;\n  t.period = 0x002e;\n  t.periodarmenian = 0x0589;\n  t.periodcentered = 0x00b7;\n  t.periodhalfwidth = 0xff61;\n  t.periodinferior = 0xf6e7;\n  t.periodmonospace = 0xff0e;\n  t.periodsmall = 0xfe52;\n  t.periodsuperior = 0xf6e8;\n  t.perispomenigreekcmb = 0x0342;\n  t.perpendicular = 0x22a5;\n  t.perthousand = 0x2030;\n  t.peseta = 0x20a7;\n  t.pfsquare = 0x338a;\n  t.phabengali = 0x09ab;\n  t.phadeva = 0x092b;\n  t.phagujarati = 0x0aab;\n  t.phagurmukhi = 0x0a2b;\n  t.phi = 0x03c6;\n  t.phi1 = 0x03d5;\n  t.phieuphacirclekorean = 0x327a;\n  t.phieuphaparenkorean = 0x321a;\n  t.phieuphcirclekorean = 0x326c;\n  t.phieuphkorean = 0x314d;\n  t.phieuphparenkorean = 0x320c;\n  t.philatin = 0x0278;\n  t.phinthuthai = 0x0e3a;\n  t.phisymbolgreek = 0x03d5;\n  t.phook = 0x01a5;\n  t.phophanthai = 0x0e1e;\n  t.phophungthai = 0x0e1c;\n  t.phosamphaothai = 0x0e20;\n  t.pi = 0x03c0;\n  t.pieupacirclekorean = 0x3273;\n  t.pieupaparenkorean = 0x3213;\n  t.pieupcieuckorean = 0x3176;\n  t.pieupcirclekorean = 0x3265;\n  t.pieupkiyeokkorean = 0x3172;\n  t.pieupkorean = 0x3142;\n  t.pieupparenkorean = 0x3205;\n  t.pieupsioskiyeokkorean = 0x3174;\n  t.pieupsioskorean = 0x3144;\n  t.pieupsiostikeutkorean = 0x3175;\n  t.pieupthieuthkorean = 0x3177;\n  t.pieuptikeutkorean = 0x3173;\n  t.pihiragana = 0x3074;\n  t.pikatakana = 0x30d4;\n  t.pisymbolgreek = 0x03d6;\n  t.piwrarmenian = 0x0583;\n  t.plus = 0x002b;\n  t.plusbelowcmb = 0x031f;\n  t.pluscircle = 0x2295;\n  t.plusminus = 0x00b1;\n  t.plusmod = 0x02d6;\n  t.plusmonospace = 0xff0b;\n  t.plussmall = 0xfe62;\n  t.plussuperior = 0x207a;\n  t.pmonospace = 0xff50;\n  t.pmsquare = 0x33d8;\n  t.pohiragana = 0x307d;\n  t.pointingindexdownwhite = 0x261f;\n  t.pointingindexleftwhite = 0x261c;\n  t.pointingindexrightwhite = 0x261e;\n  t.pointingindexupwhite = 0x261d;\n  t.pokatakana = 0x30dd;\n  t.poplathai = 0x0e1b;\n  t.postalmark = 0x3012;\n  t.postalmarkface = 0x3020;\n  t.pparen = 0x24ab;\n  t.precedes = 0x227a;\n  t.prescription = 0x211e;\n  t.primemod = 0x02b9;\n  t.primereversed = 0x2035;\n  t.product = 0x220f;\n  t.projective = 0x2305;\n  t.prolongedkana = 0x30fc;\n  t.propellor = 0x2318;\n  t.propersubset = 0x2282;\n  t.propersuperset = 0x2283;\n  t.proportion = 0x2237;\n  t.proportional = 0x221d;\n  t.psi = 0x03c8;\n  t.psicyrillic = 0x0471;\n  t.psilipneumatacyrilliccmb = 0x0486;\n  t.pssquare = 0x33b0;\n  t.puhiragana = 0x3077;\n  t.pukatakana = 0x30d7;\n  t.pvsquare = 0x33b4;\n  t.pwsquare = 0x33ba;\n  t.q = 0x0071;\n  t.qadeva = 0x0958;\n  t.qadmahebrew = 0x05a8;\n  t.qafarabic = 0x0642;\n  t.qaffinalarabic = 0xfed6;\n  t.qafinitialarabic = 0xfed7;\n  t.qafmedialarabic = 0xfed8;\n  t.qamats = 0x05b8;\n  t.qamats10 = 0x05b8;\n  t.qamats1a = 0x05b8;\n  t.qamats1c = 0x05b8;\n  t.qamats27 = 0x05b8;\n  t.qamats29 = 0x05b8;\n  t.qamats33 = 0x05b8;\n  t.qamatsde = 0x05b8;\n  t.qamatshebrew = 0x05b8;\n  t.qamatsnarrowhebrew = 0x05b8;\n  t.qamatsqatanhebrew = 0x05b8;\n  t.qamatsqatannarrowhebrew = 0x05b8;\n  t.qamatsqatanquarterhebrew = 0x05b8;\n  t.qamatsqatanwidehebrew = 0x05b8;\n  t.qamatsquarterhebrew = 0x05b8;\n  t.qamatswidehebrew = 0x05b8;\n  t.qarneyparahebrew = 0x059f;\n  t.qbopomofo = 0x3111;\n  t.qcircle = 0x24e0;\n  t.qhook = 0x02a0;\n  t.qmonospace = 0xff51;\n  t.qof = 0x05e7;\n  t.qofdagesh = 0xfb47;\n  t.qofdageshhebrew = 0xfb47;\n  t.qofhebrew = 0x05e7;\n  t.qparen = 0x24ac;\n  t.quarternote = 0x2669;\n  t.qubuts = 0x05bb;\n  t.qubuts18 = 0x05bb;\n  t.qubuts25 = 0x05bb;\n  t.qubuts31 = 0x05bb;\n  t.qubutshebrew = 0x05bb;\n  t.qubutsnarrowhebrew = 0x05bb;\n  t.qubutsquarterhebrew = 0x05bb;\n  t.qubutswidehebrew = 0x05bb;\n  t.question = 0x003f;\n  t.questionarabic = 0x061f;\n  t.questionarmenian = 0x055e;\n  t.questiondown = 0x00bf;\n  t.questiondownsmall = 0xf7bf;\n  t.questiongreek = 0x037e;\n  t.questionmonospace = 0xff1f;\n  t.questionsmall = 0xf73f;\n  t.quotedbl = 0x0022;\n  t.quotedblbase = 0x201e;\n  t.quotedblleft = 0x201c;\n  t.quotedblmonospace = 0xff02;\n  t.quotedblprime = 0x301e;\n  t.quotedblprimereversed = 0x301d;\n  t.quotedblright = 0x201d;\n  t.quoteleft = 0x2018;\n  t.quoteleftreversed = 0x201b;\n  t.quotereversed = 0x201b;\n  t.quoteright = 0x2019;\n  t.quoterightn = 0x0149;\n  t.quotesinglbase = 0x201a;\n  t.quotesingle = 0x0027;\n  t.quotesinglemonospace = 0xff07;\n  t.r = 0x0072;\n  t.raarmenian = 0x057c;\n  t.rabengali = 0x09b0;\n  t.racute = 0x0155;\n  t.radeva = 0x0930;\n  t.radical = 0x221a;\n  t.radicalex = 0xf8e5;\n  t.radoverssquare = 0x33ae;\n  t.radoverssquaredsquare = 0x33af;\n  t.radsquare = 0x33ad;\n  t.rafe = 0x05bf;\n  t.rafehebrew = 0x05bf;\n  t.ragujarati = 0x0ab0;\n  t.ragurmukhi = 0x0a30;\n  t.rahiragana = 0x3089;\n  t.rakatakana = 0x30e9;\n  t.rakatakanahalfwidth = 0xff97;\n  t.ralowerdiagonalbengali = 0x09f1;\n  t.ramiddlediagonalbengali = 0x09f0;\n  t.ramshorn = 0x0264;\n  t.ratio = 0x2236;\n  t.rbopomofo = 0x3116;\n  t.rcaron = 0x0159;\n  t.rcedilla = 0x0157;\n  t.rcircle = 0x24e1;\n  t.rcommaaccent = 0x0157;\n  t.rdblgrave = 0x0211;\n  t.rdotaccent = 0x1e59;\n  t.rdotbelow = 0x1e5b;\n  t.rdotbelowmacron = 0x1e5d;\n  t.referencemark = 0x203b;\n  t.reflexsubset = 0x2286;\n  t.reflexsuperset = 0x2287;\n  t.registered = 0x00ae;\n  t.registersans = 0xf8e8;\n  t.registerserif = 0xf6da;\n  t.reharabic = 0x0631;\n  t.reharmenian = 0x0580;\n  t.rehfinalarabic = 0xfeae;\n  t.rehiragana = 0x308c;\n  t.rekatakana = 0x30ec;\n  t.rekatakanahalfwidth = 0xff9a;\n  t.resh = 0x05e8;\n  t.reshdageshhebrew = 0xfb48;\n  t.reshhebrew = 0x05e8;\n  t.reversedtilde = 0x223d;\n  t.reviahebrew = 0x0597;\n  t.reviamugrashhebrew = 0x0597;\n  t.revlogicalnot = 0x2310;\n  t.rfishhook = 0x027e;\n  t.rfishhookreversed = 0x027f;\n  t.rhabengali = 0x09dd;\n  t.rhadeva = 0x095d;\n  t.rho = 0x03c1;\n  t.rhook = 0x027d;\n  t.rhookturned = 0x027b;\n  t.rhookturnedsuperior = 0x02b5;\n  t.rhosymbolgreek = 0x03f1;\n  t.rhotichookmod = 0x02de;\n  t.rieulacirclekorean = 0x3271;\n  t.rieulaparenkorean = 0x3211;\n  t.rieulcirclekorean = 0x3263;\n  t.rieulhieuhkorean = 0x3140;\n  t.rieulkiyeokkorean = 0x313a;\n  t.rieulkiyeoksioskorean = 0x3169;\n  t.rieulkorean = 0x3139;\n  t.rieulmieumkorean = 0x313b;\n  t.rieulpansioskorean = 0x316c;\n  t.rieulparenkorean = 0x3203;\n  t.rieulphieuphkorean = 0x313f;\n  t.rieulpieupkorean = 0x313c;\n  t.rieulpieupsioskorean = 0x316b;\n  t.rieulsioskorean = 0x313d;\n  t.rieulthieuthkorean = 0x313e;\n  t.rieultikeutkorean = 0x316a;\n  t.rieulyeorinhieuhkorean = 0x316d;\n  t.rightangle = 0x221f;\n  t.righttackbelowcmb = 0x0319;\n  t.righttriangle = 0x22bf;\n  t.rihiragana = 0x308a;\n  t.rikatakana = 0x30ea;\n  t.rikatakanahalfwidth = 0xff98;\n  t.ring = 0x02da;\n  t.ringbelowcmb = 0x0325;\n  t.ringcmb = 0x030a;\n  t.ringhalfleft = 0x02bf;\n  t.ringhalfleftarmenian = 0x0559;\n  t.ringhalfleftbelowcmb = 0x031c;\n  t.ringhalfleftcentered = 0x02d3;\n  t.ringhalfright = 0x02be;\n  t.ringhalfrightbelowcmb = 0x0339;\n  t.ringhalfrightcentered = 0x02d2;\n  t.rinvertedbreve = 0x0213;\n  t.rittorusquare = 0x3351;\n  t.rlinebelow = 0x1e5f;\n  t.rlongleg = 0x027c;\n  t.rlonglegturned = 0x027a;\n  t.rmonospace = 0xff52;\n  t.rohiragana = 0x308d;\n  t.rokatakana = 0x30ed;\n  t.rokatakanahalfwidth = 0xff9b;\n  t.roruathai = 0x0e23;\n  t.rparen = 0x24ad;\n  t.rrabengali = 0x09dc;\n  t.rradeva = 0x0931;\n  t.rragurmukhi = 0x0a5c;\n  t.rreharabic = 0x0691;\n  t.rrehfinalarabic = 0xfb8d;\n  t.rrvocalicbengali = 0x09e0;\n  t.rrvocalicdeva = 0x0960;\n  t.rrvocalicgujarati = 0x0ae0;\n  t.rrvocalicvowelsignbengali = 0x09c4;\n  t.rrvocalicvowelsigndeva = 0x0944;\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\n  t.rsuperior = 0xf6f1;\n  t.rtblock = 0x2590;\n  t.rturned = 0x0279;\n  t.rturnedsuperior = 0x02b4;\n  t.ruhiragana = 0x308b;\n  t.rukatakana = 0x30eb;\n  t.rukatakanahalfwidth = 0xff99;\n  t.rupeemarkbengali = 0x09f2;\n  t.rupeesignbengali = 0x09f3;\n  t.rupiah = 0xf6dd;\n  t.ruthai = 0x0e24;\n  t.rvocalicbengali = 0x098b;\n  t.rvocalicdeva = 0x090b;\n  t.rvocalicgujarati = 0x0a8b;\n  t.rvocalicvowelsignbengali = 0x09c3;\n  t.rvocalicvowelsigndeva = 0x0943;\n  t.rvocalicvowelsigngujarati = 0x0ac3;\n  t.s = 0x0073;\n  t.sabengali = 0x09b8;\n  t.sacute = 0x015b;\n  t.sacutedotaccent = 0x1e65;\n  t.sadarabic = 0x0635;\n  t.sadeva = 0x0938;\n  t.sadfinalarabic = 0xfeba;\n  t.sadinitialarabic = 0xfebb;\n  t.sadmedialarabic = 0xfebc;\n  t.sagujarati = 0x0ab8;\n  t.sagurmukhi = 0x0a38;\n  t.sahiragana = 0x3055;\n  t.sakatakana = 0x30b5;\n  t.sakatakanahalfwidth = 0xff7b;\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\n  t.samekh = 0x05e1;\n  t.samekhdagesh = 0xfb41;\n  t.samekhdageshhebrew = 0xfb41;\n  t.samekhhebrew = 0x05e1;\n  t.saraaathai = 0x0e32;\n  t.saraaethai = 0x0e41;\n  t.saraaimaimalaithai = 0x0e44;\n  t.saraaimaimuanthai = 0x0e43;\n  t.saraamthai = 0x0e33;\n  t.saraathai = 0x0e30;\n  t.saraethai = 0x0e40;\n  t.saraiileftthai = 0xf886;\n  t.saraiithai = 0x0e35;\n  t.saraileftthai = 0xf885;\n  t.saraithai = 0x0e34;\n  t.saraothai = 0x0e42;\n  t.saraueeleftthai = 0xf888;\n  t.saraueethai = 0x0e37;\n  t.saraueleftthai = 0xf887;\n  t.sarauethai = 0x0e36;\n  t.sarauthai = 0x0e38;\n  t.sarauuthai = 0x0e39;\n  t.sbopomofo = 0x3119;\n  t.scaron = 0x0161;\n  t.scarondotaccent = 0x1e67;\n  t.scedilla = 0x015f;\n  t.schwa = 0x0259;\n  t.schwacyrillic = 0x04d9;\n  t.schwadieresiscyrillic = 0x04db;\n  t.schwahook = 0x025a;\n  t.scircle = 0x24e2;\n  t.scircumflex = 0x015d;\n  t.scommaaccent = 0x0219;\n  t.sdotaccent = 0x1e61;\n  t.sdotbelow = 0x1e63;\n  t.sdotbelowdotaccent = 0x1e69;\n  t.seagullbelowcmb = 0x033c;\n  t.second = 0x2033;\n  t.secondtonechinese = 0x02ca;\n  t.section = 0x00a7;\n  t.seenarabic = 0x0633;\n  t.seenfinalarabic = 0xfeb2;\n  t.seeninitialarabic = 0xfeb3;\n  t.seenmedialarabic = 0xfeb4;\n  t.segol = 0x05b6;\n  t.segol13 = 0x05b6;\n  t.segol1f = 0x05b6;\n  t.segol2c = 0x05b6;\n  t.segolhebrew = 0x05b6;\n  t.segolnarrowhebrew = 0x05b6;\n  t.segolquarterhebrew = 0x05b6;\n  t.segoltahebrew = 0x0592;\n  t.segolwidehebrew = 0x05b6;\n  t.seharmenian = 0x057d;\n  t.sehiragana = 0x305b;\n  t.sekatakana = 0x30bb;\n  t.sekatakanahalfwidth = 0xff7e;\n  t.semicolon = 0x003b;\n  t.semicolonarabic = 0x061b;\n  t.semicolonmonospace = 0xff1b;\n  t.semicolonsmall = 0xfe54;\n  t.semivoicedmarkkana = 0x309c;\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\n  t.sentisquare = 0x3322;\n  t.sentosquare = 0x3323;\n  t.seven = 0x0037;\n  t.sevenarabic = 0x0667;\n  t.sevenbengali = 0x09ed;\n  t.sevencircle = 0x2466;\n  t.sevencircleinversesansserif = 0x2790;\n  t.sevendeva = 0x096d;\n  t.seveneighths = 0x215e;\n  t.sevengujarati = 0x0aed;\n  t.sevengurmukhi = 0x0a6d;\n  t.sevenhackarabic = 0x0667;\n  t.sevenhangzhou = 0x3027;\n  t.sevenideographicparen = 0x3226;\n  t.seveninferior = 0x2087;\n  t.sevenmonospace = 0xff17;\n  t.sevenoldstyle = 0xf737;\n  t.sevenparen = 0x247a;\n  t.sevenperiod = 0x248e;\n  t.sevenpersian = 0x06f7;\n  t.sevenroman = 0x2176;\n  t.sevensuperior = 0x2077;\n  t.seventeencircle = 0x2470;\n  t.seventeenparen = 0x2484;\n  t.seventeenperiod = 0x2498;\n  t.seventhai = 0x0e57;\n  t.sfthyphen = 0x00ad;\n  t.shaarmenian = 0x0577;\n  t.shabengali = 0x09b6;\n  t.shacyrillic = 0x0448;\n  t.shaddaarabic = 0x0651;\n  t.shaddadammaarabic = 0xfc61;\n  t.shaddadammatanarabic = 0xfc5e;\n  t.shaddafathaarabic = 0xfc60;\n  t.shaddakasraarabic = 0xfc62;\n  t.shaddakasratanarabic = 0xfc5f;\n  t.shade = 0x2592;\n  t.shadedark = 0x2593;\n  t.shadelight = 0x2591;\n  t.shademedium = 0x2592;\n  t.shadeva = 0x0936;\n  t.shagujarati = 0x0ab6;\n  t.shagurmukhi = 0x0a36;\n  t.shalshelethebrew = 0x0593;\n  t.shbopomofo = 0x3115;\n  t.shchacyrillic = 0x0449;\n  t.sheenarabic = 0x0634;\n  t.sheenfinalarabic = 0xfeb6;\n  t.sheeninitialarabic = 0xfeb7;\n  t.sheenmedialarabic = 0xfeb8;\n  t.sheicoptic = 0x03e3;\n  t.sheqel = 0x20aa;\n  t.sheqelhebrew = 0x20aa;\n  t.sheva = 0x05b0;\n  t.sheva115 = 0x05b0;\n  t.sheva15 = 0x05b0;\n  t.sheva22 = 0x05b0;\n  t.sheva2e = 0x05b0;\n  t.shevahebrew = 0x05b0;\n  t.shevanarrowhebrew = 0x05b0;\n  t.shevaquarterhebrew = 0x05b0;\n  t.shevawidehebrew = 0x05b0;\n  t.shhacyrillic = 0x04bb;\n  t.shimacoptic = 0x03ed;\n  t.shin = 0x05e9;\n  t.shindagesh = 0xfb49;\n  t.shindageshhebrew = 0xfb49;\n  t.shindageshshindot = 0xfb2c;\n  t.shindageshshindothebrew = 0xfb2c;\n  t.shindageshsindot = 0xfb2d;\n  t.shindageshsindothebrew = 0xfb2d;\n  t.shindothebrew = 0x05c1;\n  t.shinhebrew = 0x05e9;\n  t.shinshindot = 0xfb2a;\n  t.shinshindothebrew = 0xfb2a;\n  t.shinsindot = 0xfb2b;\n  t.shinsindothebrew = 0xfb2b;\n  t.shook = 0x0282;\n  t.sigma = 0x03c3;\n  t.sigma1 = 0x03c2;\n  t.sigmafinal = 0x03c2;\n  t.sigmalunatesymbolgreek = 0x03f2;\n  t.sihiragana = 0x3057;\n  t.sikatakana = 0x30b7;\n  t.sikatakanahalfwidth = 0xff7c;\n  t.siluqhebrew = 0x05bd;\n  t.siluqlefthebrew = 0x05bd;\n  t.similar = 0x223c;\n  t.sindothebrew = 0x05c2;\n  t.siosacirclekorean = 0x3274;\n  t.siosaparenkorean = 0x3214;\n  t.sioscieuckorean = 0x317e;\n  t.sioscirclekorean = 0x3266;\n  t.sioskiyeokkorean = 0x317a;\n  t.sioskorean = 0x3145;\n  t.siosnieunkorean = 0x317b;\n  t.siosparenkorean = 0x3206;\n  t.siospieupkorean = 0x317d;\n  t.siostikeutkorean = 0x317c;\n  t.six = 0x0036;\n  t.sixarabic = 0x0666;\n  t.sixbengali = 0x09ec;\n  t.sixcircle = 0x2465;\n  t.sixcircleinversesansserif = 0x278f;\n  t.sixdeva = 0x096c;\n  t.sixgujarati = 0x0aec;\n  t.sixgurmukhi = 0x0a6c;\n  t.sixhackarabic = 0x0666;\n  t.sixhangzhou = 0x3026;\n  t.sixideographicparen = 0x3225;\n  t.sixinferior = 0x2086;\n  t.sixmonospace = 0xff16;\n  t.sixoldstyle = 0xf736;\n  t.sixparen = 0x2479;\n  t.sixperiod = 0x248d;\n  t.sixpersian = 0x06f6;\n  t.sixroman = 0x2175;\n  t.sixsuperior = 0x2076;\n  t.sixteencircle = 0x246f;\n  t.sixteencurrencydenominatorbengali = 0x09f9;\n  t.sixteenparen = 0x2483;\n  t.sixteenperiod = 0x2497;\n  t.sixthai = 0x0e56;\n  t.slash = 0x002f;\n  t.slashmonospace = 0xff0f;\n  t.slong = 0x017f;\n  t.slongdotaccent = 0x1e9b;\n  t.smileface = 0x263a;\n  t.smonospace = 0xff53;\n  t.sofpasuqhebrew = 0x05c3;\n  t.softhyphen = 0x00ad;\n  t.softsigncyrillic = 0x044c;\n  t.sohiragana = 0x305d;\n  t.sokatakana = 0x30bd;\n  t.sokatakanahalfwidth = 0xff7f;\n  t.soliduslongoverlaycmb = 0x0338;\n  t.solidusshortoverlaycmb = 0x0337;\n  t.sorusithai = 0x0e29;\n  t.sosalathai = 0x0e28;\n  t.sosothai = 0x0e0b;\n  t.sosuathai = 0x0e2a;\n  t.space = 0x0020;\n  t.spacehackarabic = 0x0020;\n  t.spade = 0x2660;\n  t.spadesuitblack = 0x2660;\n  t.spadesuitwhite = 0x2664;\n  t.sparen = 0x24ae;\n  t.squarebelowcmb = 0x033b;\n  t.squarecc = 0x33c4;\n  t.squarecm = 0x339d;\n  t.squarediagonalcrosshatchfill = 0x25a9;\n  t.squarehorizontalfill = 0x25a4;\n  t.squarekg = 0x338f;\n  t.squarekm = 0x339e;\n  t.squarekmcapital = 0x33ce;\n  t.squareln = 0x33d1;\n  t.squarelog = 0x33d2;\n  t.squaremg = 0x338e;\n  t.squaremil = 0x33d5;\n  t.squaremm = 0x339c;\n  t.squaremsquared = 0x33a1;\n  t.squareorthogonalcrosshatchfill = 0x25a6;\n  t.squareupperlefttolowerrightfill = 0x25a7;\n  t.squareupperrighttolowerleftfill = 0x25a8;\n  t.squareverticalfill = 0x25a5;\n  t.squarewhitewithsmallblack = 0x25a3;\n  t.srsquare = 0x33db;\n  t.ssabengali = 0x09b7;\n  t.ssadeva = 0x0937;\n  t.ssagujarati = 0x0ab7;\n  t.ssangcieuckorean = 0x3149;\n  t.ssanghieuhkorean = 0x3185;\n  t.ssangieungkorean = 0x3180;\n  t.ssangkiyeokkorean = 0x3132;\n  t.ssangnieunkorean = 0x3165;\n  t.ssangpieupkorean = 0x3143;\n  t.ssangsioskorean = 0x3146;\n  t.ssangtikeutkorean = 0x3138;\n  t.ssuperior = 0xf6f2;\n  t.sterling = 0x00a3;\n  t.sterlingmonospace = 0xffe1;\n  t.strokelongoverlaycmb = 0x0336;\n  t.strokeshortoverlaycmb = 0x0335;\n  t.subset = 0x2282;\n  t.subsetnotequal = 0x228a;\n  t.subsetorequal = 0x2286;\n  t.succeeds = 0x227b;\n  t.suchthat = 0x220b;\n  t.suhiragana = 0x3059;\n  t.sukatakana = 0x30b9;\n  t.sukatakanahalfwidth = 0xff7d;\n  t.sukunarabic = 0x0652;\n  t.summation = 0x2211;\n  t.sun = 0x263c;\n  t.superset = 0x2283;\n  t.supersetnotequal = 0x228b;\n  t.supersetorequal = 0x2287;\n  t.svsquare = 0x33dc;\n  t.syouwaerasquare = 0x337c;\n  t.t = 0x0074;\n  t.tabengali = 0x09a4;\n  t.tackdown = 0x22a4;\n  t.tackleft = 0x22a3;\n  t.tadeva = 0x0924;\n  t.tagujarati = 0x0aa4;\n  t.tagurmukhi = 0x0a24;\n  t.taharabic = 0x0637;\n  t.tahfinalarabic = 0xfec2;\n  t.tahinitialarabic = 0xfec3;\n  t.tahiragana = 0x305f;\n  t.tahmedialarabic = 0xfec4;\n  t.taisyouerasquare = 0x337d;\n  t.takatakana = 0x30bf;\n  t.takatakanahalfwidth = 0xff80;\n  t.tatweelarabic = 0x0640;\n  t.tau = 0x03c4;\n  t.tav = 0x05ea;\n  t.tavdages = 0xfb4a;\n  t.tavdagesh = 0xfb4a;\n  t.tavdageshhebrew = 0xfb4a;\n  t.tavhebrew = 0x05ea;\n  t.tbar = 0x0167;\n  t.tbopomofo = 0x310a;\n  t.tcaron = 0x0165;\n  t.tccurl = 0x02a8;\n  t.tcedilla = 0x0163;\n  t.tcheharabic = 0x0686;\n  t.tchehfinalarabic = 0xfb7b;\n  t.tchehinitialarabic = 0xfb7c;\n  t.tchehmedialarabic = 0xfb7d;\n  t.tcircle = 0x24e3;\n  t.tcircumflexbelow = 0x1e71;\n  t.tcommaaccent = 0x0163;\n  t.tdieresis = 0x1e97;\n  t.tdotaccent = 0x1e6b;\n  t.tdotbelow = 0x1e6d;\n  t.tecyrillic = 0x0442;\n  t.tedescendercyrillic = 0x04ad;\n  t.teharabic = 0x062a;\n  t.tehfinalarabic = 0xfe96;\n  t.tehhahinitialarabic = 0xfca2;\n  t.tehhahisolatedarabic = 0xfc0c;\n  t.tehinitialarabic = 0xfe97;\n  t.tehiragana = 0x3066;\n  t.tehjeeminitialarabic = 0xfca1;\n  t.tehjeemisolatedarabic = 0xfc0b;\n  t.tehmarbutaarabic = 0x0629;\n  t.tehmarbutafinalarabic = 0xfe94;\n  t.tehmedialarabic = 0xfe98;\n  t.tehmeeminitialarabic = 0xfca4;\n  t.tehmeemisolatedarabic = 0xfc0e;\n  t.tehnoonfinalarabic = 0xfc73;\n  t.tekatakana = 0x30c6;\n  t.tekatakanahalfwidth = 0xff83;\n  t.telephone = 0x2121;\n  t.telephoneblack = 0x260e;\n  t.telishagedolahebrew = 0x05a0;\n  t.telishaqetanahebrew = 0x05a9;\n  t.tencircle = 0x2469;\n  t.tenideographicparen = 0x3229;\n  t.tenparen = 0x247d;\n  t.tenperiod = 0x2491;\n  t.tenroman = 0x2179;\n  t.tesh = 0x02a7;\n  t.tet = 0x05d8;\n  t.tetdagesh = 0xfb38;\n  t.tetdageshhebrew = 0xfb38;\n  t.tethebrew = 0x05d8;\n  t.tetsecyrillic = 0x04b5;\n  t.tevirhebrew = 0x059b;\n  t.tevirlefthebrew = 0x059b;\n  t.thabengali = 0x09a5;\n  t.thadeva = 0x0925;\n  t.thagujarati = 0x0aa5;\n  t.thagurmukhi = 0x0a25;\n  t.thalarabic = 0x0630;\n  t.thalfinalarabic = 0xfeac;\n  t.thanthakhatlowleftthai = 0xf898;\n  t.thanthakhatlowrightthai = 0xf897;\n  t.thanthakhatthai = 0x0e4c;\n  t.thanthakhatupperleftthai = 0xf896;\n  t.theharabic = 0x062b;\n  t.thehfinalarabic = 0xfe9a;\n  t.thehinitialarabic = 0xfe9b;\n  t.thehmedialarabic = 0xfe9c;\n  t.thereexists = 0x2203;\n  t.therefore = 0x2234;\n  t.theta = 0x03b8;\n  t.theta1 = 0x03d1;\n  t.thetasymbolgreek = 0x03d1;\n  t.thieuthacirclekorean = 0x3279;\n  t.thieuthaparenkorean = 0x3219;\n  t.thieuthcirclekorean = 0x326b;\n  t.thieuthkorean = 0x314c;\n  t.thieuthparenkorean = 0x320b;\n  t.thirteencircle = 0x246c;\n  t.thirteenparen = 0x2480;\n  t.thirteenperiod = 0x2494;\n  t.thonangmonthothai = 0x0e11;\n  t.thook = 0x01ad;\n  t.thophuthaothai = 0x0e12;\n  t.thorn = 0x00fe;\n  t.thothahanthai = 0x0e17;\n  t.thothanthai = 0x0e10;\n  t.thothongthai = 0x0e18;\n  t.thothungthai = 0x0e16;\n  t.thousandcyrillic = 0x0482;\n  t.thousandsseparatorarabic = 0x066c;\n  t.thousandsseparatorpersian = 0x066c;\n  t.three = 0x0033;\n  t.threearabic = 0x0663;\n  t.threebengali = 0x09e9;\n  t.threecircle = 0x2462;\n  t.threecircleinversesansserif = 0x278c;\n  t.threedeva = 0x0969;\n  t.threeeighths = 0x215c;\n  t.threegujarati = 0x0ae9;\n  t.threegurmukhi = 0x0a69;\n  t.threehackarabic = 0x0663;\n  t.threehangzhou = 0x3023;\n  t.threeideographicparen = 0x3222;\n  t.threeinferior = 0x2083;\n  t.threemonospace = 0xff13;\n  t.threenumeratorbengali = 0x09f6;\n  t.threeoldstyle = 0xf733;\n  t.threeparen = 0x2476;\n  t.threeperiod = 0x248a;\n  t.threepersian = 0x06f3;\n  t.threequarters = 0x00be;\n  t.threequartersemdash = 0xf6de;\n  t.threeroman = 0x2172;\n  t.threesuperior = 0x00b3;\n  t.threethai = 0x0e53;\n  t.thzsquare = 0x3394;\n  t.tihiragana = 0x3061;\n  t.tikatakana = 0x30c1;\n  t.tikatakanahalfwidth = 0xff81;\n  t.tikeutacirclekorean = 0x3270;\n  t.tikeutaparenkorean = 0x3210;\n  t.tikeutcirclekorean = 0x3262;\n  t.tikeutkorean = 0x3137;\n  t.tikeutparenkorean = 0x3202;\n  t.tilde = 0x02dc;\n  t.tildebelowcmb = 0x0330;\n  t.tildecmb = 0x0303;\n  t.tildecomb = 0x0303;\n  t.tildedoublecmb = 0x0360;\n  t.tildeoperator = 0x223c;\n  t.tildeoverlaycmb = 0x0334;\n  t.tildeverticalcmb = 0x033e;\n  t.timescircle = 0x2297;\n  t.tipehahebrew = 0x0596;\n  t.tipehalefthebrew = 0x0596;\n  t.tippigurmukhi = 0x0a70;\n  t.titlocyrilliccmb = 0x0483;\n  t.tiwnarmenian = 0x057f;\n  t.tlinebelow = 0x1e6f;\n  t.tmonospace = 0xff54;\n  t.toarmenian = 0x0569;\n  t.tohiragana = 0x3068;\n  t.tokatakana = 0x30c8;\n  t.tokatakanahalfwidth = 0xff84;\n  t.tonebarextrahighmod = 0x02e5;\n  t.tonebarextralowmod = 0x02e9;\n  t.tonebarhighmod = 0x02e6;\n  t.tonebarlowmod = 0x02e8;\n  t.tonebarmidmod = 0x02e7;\n  t.tonefive = 0x01bd;\n  t.tonesix = 0x0185;\n  t.tonetwo = 0x01a8;\n  t.tonos = 0x0384;\n  t.tonsquare = 0x3327;\n  t.topatakthai = 0x0e0f;\n  t.tortoiseshellbracketleft = 0x3014;\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\n  t.tortoiseshellbracketleftvertical = 0xfe39;\n  t.tortoiseshellbracketright = 0x3015;\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\n  t.totaothai = 0x0e15;\n  t.tpalatalhook = 0x01ab;\n  t.tparen = 0x24af;\n  t.trademark = 0x2122;\n  t.trademarksans = 0xf8ea;\n  t.trademarkserif = 0xf6db;\n  t.tretroflexhook = 0x0288;\n  t.triagdn = 0x25bc;\n  t.triaglf = 0x25c4;\n  t.triagrt = 0x25ba;\n  t.triagup = 0x25b2;\n  t.ts = 0x02a6;\n  t.tsadi = 0x05e6;\n  t.tsadidagesh = 0xfb46;\n  t.tsadidageshhebrew = 0xfb46;\n  t.tsadihebrew = 0x05e6;\n  t.tsecyrillic = 0x0446;\n  t.tsere = 0x05b5;\n  t.tsere12 = 0x05b5;\n  t.tsere1e = 0x05b5;\n  t.tsere2b = 0x05b5;\n  t.tserehebrew = 0x05b5;\n  t.tserenarrowhebrew = 0x05b5;\n  t.tserequarterhebrew = 0x05b5;\n  t.tserewidehebrew = 0x05b5;\n  t.tshecyrillic = 0x045b;\n  t.tsuperior = 0xf6f3;\n  t.ttabengali = 0x099f;\n  t.ttadeva = 0x091f;\n  t.ttagujarati = 0x0a9f;\n  t.ttagurmukhi = 0x0a1f;\n  t.tteharabic = 0x0679;\n  t.ttehfinalarabic = 0xfb67;\n  t.ttehinitialarabic = 0xfb68;\n  t.ttehmedialarabic = 0xfb69;\n  t.tthabengali = 0x09a0;\n  t.tthadeva = 0x0920;\n  t.tthagujarati = 0x0aa0;\n  t.tthagurmukhi = 0x0a20;\n  t.tturned = 0x0287;\n  t.tuhiragana = 0x3064;\n  t.tukatakana = 0x30c4;\n  t.tukatakanahalfwidth = 0xff82;\n  t.tusmallhiragana = 0x3063;\n  t.tusmallkatakana = 0x30c3;\n  t.tusmallkatakanahalfwidth = 0xff6f;\n  t.twelvecircle = 0x246b;\n  t.twelveparen = 0x247f;\n  t.twelveperiod = 0x2493;\n  t.twelveroman = 0x217b;\n  t.twentycircle = 0x2473;\n  t.twentyhangzhou = 0x5344;\n  t.twentyparen = 0x2487;\n  t.twentyperiod = 0x249b;\n  t.two = 0x0032;\n  t.twoarabic = 0x0662;\n  t.twobengali = 0x09e8;\n  t.twocircle = 0x2461;\n  t.twocircleinversesansserif = 0x278b;\n  t.twodeva = 0x0968;\n  t.twodotenleader = 0x2025;\n  t.twodotleader = 0x2025;\n  t.twodotleadervertical = 0xfe30;\n  t.twogujarati = 0x0ae8;\n  t.twogurmukhi = 0x0a68;\n  t.twohackarabic = 0x0662;\n  t.twohangzhou = 0x3022;\n  t.twoideographicparen = 0x3221;\n  t.twoinferior = 0x2082;\n  t.twomonospace = 0xff12;\n  t.twonumeratorbengali = 0x09f5;\n  t.twooldstyle = 0xf732;\n  t.twoparen = 0x2475;\n  t.twoperiod = 0x2489;\n  t.twopersian = 0x06f2;\n  t.tworoman = 0x2171;\n  t.twostroke = 0x01bb;\n  t.twosuperior = 0x00b2;\n  t.twothai = 0x0e52;\n  t.twothirds = 0x2154;\n  t.u = 0x0075;\n  t.uacute = 0x00fa;\n  t.ubar = 0x0289;\n  t.ubengali = 0x0989;\n  t.ubopomofo = 0x3128;\n  t.ubreve = 0x016d;\n  t.ucaron = 0x01d4;\n  t.ucircle = 0x24e4;\n  t.ucircumflex = 0x00fb;\n  t.ucircumflexbelow = 0x1e77;\n  t.ucyrillic = 0x0443;\n  t.udattadeva = 0x0951;\n  t.udblacute = 0x0171;\n  t.udblgrave = 0x0215;\n  t.udeva = 0x0909;\n  t.udieresis = 0x00fc;\n  t.udieresisacute = 0x01d8;\n  t.udieresisbelow = 0x1e73;\n  t.udieresiscaron = 0x01da;\n  t.udieresiscyrillic = 0x04f1;\n  t.udieresisgrave = 0x01dc;\n  t.udieresismacron = 0x01d6;\n  t.udotbelow = 0x1ee5;\n  t.ugrave = 0x00f9;\n  t.ugujarati = 0x0a89;\n  t.ugurmukhi = 0x0a09;\n  t.uhiragana = 0x3046;\n  t.uhookabove = 0x1ee7;\n  t.uhorn = 0x01b0;\n  t.uhornacute = 0x1ee9;\n  t.uhorndotbelow = 0x1ef1;\n  t.uhorngrave = 0x1eeb;\n  t.uhornhookabove = 0x1eed;\n  t.uhorntilde = 0x1eef;\n  t.uhungarumlaut = 0x0171;\n  t.uhungarumlautcyrillic = 0x04f3;\n  t.uinvertedbreve = 0x0217;\n  t.ukatakana = 0x30a6;\n  t.ukatakanahalfwidth = 0xff73;\n  t.ukcyrillic = 0x0479;\n  t.ukorean = 0x315c;\n  t.umacron = 0x016b;\n  t.umacroncyrillic = 0x04ef;\n  t.umacrondieresis = 0x1e7b;\n  t.umatragurmukhi = 0x0a41;\n  t.umonospace = 0xff55;\n  t.underscore = 0x005f;\n  t.underscoredbl = 0x2017;\n  t.underscoremonospace = 0xff3f;\n  t.underscorevertical = 0xfe33;\n  t.underscorewavy = 0xfe4f;\n  t.union = 0x222a;\n  t.universal = 0x2200;\n  t.uogonek = 0x0173;\n  t.uparen = 0x24b0;\n  t.upblock = 0x2580;\n  t.upperdothebrew = 0x05c4;\n  t.upsilon = 0x03c5;\n  t.upsilondieresis = 0x03cb;\n  t.upsilondieresistonos = 0x03b0;\n  t.upsilonlatin = 0x028a;\n  t.upsilontonos = 0x03cd;\n  t.uptackbelowcmb = 0x031d;\n  t.uptackmod = 0x02d4;\n  t.uragurmukhi = 0x0a73;\n  t.uring = 0x016f;\n  t.ushortcyrillic = 0x045e;\n  t.usmallhiragana = 0x3045;\n  t.usmallkatakana = 0x30a5;\n  t.usmallkatakanahalfwidth = 0xff69;\n  t.ustraightcyrillic = 0x04af;\n  t.ustraightstrokecyrillic = 0x04b1;\n  t.utilde = 0x0169;\n  t.utildeacute = 0x1e79;\n  t.utildebelow = 0x1e75;\n  t.uubengali = 0x098a;\n  t.uudeva = 0x090a;\n  t.uugujarati = 0x0a8a;\n  t.uugurmukhi = 0x0a0a;\n  t.uumatragurmukhi = 0x0a42;\n  t.uuvowelsignbengali = 0x09c2;\n  t.uuvowelsigndeva = 0x0942;\n  t.uuvowelsigngujarati = 0x0ac2;\n  t.uvowelsignbengali = 0x09c1;\n  t.uvowelsigndeva = 0x0941;\n  t.uvowelsigngujarati = 0x0ac1;\n  t.v = 0x0076;\n  t.vadeva = 0x0935;\n  t.vagujarati = 0x0ab5;\n  t.vagurmukhi = 0x0a35;\n  t.vakatakana = 0x30f7;\n  t.vav = 0x05d5;\n  t.vavdagesh = 0xfb35;\n  t.vavdagesh65 = 0xfb35;\n  t.vavdageshhebrew = 0xfb35;\n  t.vavhebrew = 0x05d5;\n  t.vavholam = 0xfb4b;\n  t.vavholamhebrew = 0xfb4b;\n  t.vavvavhebrew = 0x05f0;\n  t.vavyodhebrew = 0x05f1;\n  t.vcircle = 0x24e5;\n  t.vdotbelow = 0x1e7f;\n  t.vecyrillic = 0x0432;\n  t.veharabic = 0x06a4;\n  t.vehfinalarabic = 0xfb6b;\n  t.vehinitialarabic = 0xfb6c;\n  t.vehmedialarabic = 0xfb6d;\n  t.vekatakana = 0x30f9;\n  t.venus = 0x2640;\n  t.verticalbar = 0x007c;\n  t.verticallineabovecmb = 0x030d;\n  t.verticallinebelowcmb = 0x0329;\n  t.verticallinelowmod = 0x02cc;\n  t.verticallinemod = 0x02c8;\n  t.vewarmenian = 0x057e;\n  t.vhook = 0x028b;\n  t.vikatakana = 0x30f8;\n  t.viramabengali = 0x09cd;\n  t.viramadeva = 0x094d;\n  t.viramagujarati = 0x0acd;\n  t.visargabengali = 0x0983;\n  t.visargadeva = 0x0903;\n  t.visargagujarati = 0x0a83;\n  t.vmonospace = 0xff56;\n  t.voarmenian = 0x0578;\n  t.voicediterationhiragana = 0x309e;\n  t.voicediterationkatakana = 0x30fe;\n  t.voicedmarkkana = 0x309b;\n  t.voicedmarkkanahalfwidth = 0xff9e;\n  t.vokatakana = 0x30fa;\n  t.vparen = 0x24b1;\n  t.vtilde = 0x1e7d;\n  t.vturned = 0x028c;\n  t.vuhiragana = 0x3094;\n  t.vukatakana = 0x30f4;\n  t.w = 0x0077;\n  t.wacute = 0x1e83;\n  t.waekorean = 0x3159;\n  t.wahiragana = 0x308f;\n  t.wakatakana = 0x30ef;\n  t.wakatakanahalfwidth = 0xff9c;\n  t.wakorean = 0x3158;\n  t.wasmallhiragana = 0x308e;\n  t.wasmallkatakana = 0x30ee;\n  t.wattosquare = 0x3357;\n  t.wavedash = 0x301c;\n  t.wavyunderscorevertical = 0xfe34;\n  t.wawarabic = 0x0648;\n  t.wawfinalarabic = 0xfeee;\n  t.wawhamzaabovearabic = 0x0624;\n  t.wawhamzaabovefinalarabic = 0xfe86;\n  t.wbsquare = 0x33dd;\n  t.wcircle = 0x24e6;\n  t.wcircumflex = 0x0175;\n  t.wdieresis = 0x1e85;\n  t.wdotaccent = 0x1e87;\n  t.wdotbelow = 0x1e89;\n  t.wehiragana = 0x3091;\n  t.weierstrass = 0x2118;\n  t.wekatakana = 0x30f1;\n  t.wekorean = 0x315e;\n  t.weokorean = 0x315d;\n  t.wgrave = 0x1e81;\n  t.whitebullet = 0x25e6;\n  t.whitecircle = 0x25cb;\n  t.whitecircleinverse = 0x25d9;\n  t.whitecornerbracketleft = 0x300e;\n  t.whitecornerbracketleftvertical = 0xfe43;\n  t.whitecornerbracketright = 0x300f;\n  t.whitecornerbracketrightvertical = 0xfe44;\n  t.whitediamond = 0x25c7;\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n  t.whitedownpointingsmalltriangle = 0x25bf;\n  t.whitedownpointingtriangle = 0x25bd;\n  t.whiteleftpointingsmalltriangle = 0x25c3;\n  t.whiteleftpointingtriangle = 0x25c1;\n  t.whitelenticularbracketleft = 0x3016;\n  t.whitelenticularbracketright = 0x3017;\n  t.whiterightpointingsmalltriangle = 0x25b9;\n  t.whiterightpointingtriangle = 0x25b7;\n  t.whitesmallsquare = 0x25ab;\n  t.whitesmilingface = 0x263a;\n  t.whitesquare = 0x25a1;\n  t.whitestar = 0x2606;\n  t.whitetelephone = 0x260f;\n  t.whitetortoiseshellbracketleft = 0x3018;\n  t.whitetortoiseshellbracketright = 0x3019;\n  t.whiteuppointingsmalltriangle = 0x25b5;\n  t.whiteuppointingtriangle = 0x25b3;\n  t.wihiragana = 0x3090;\n  t.wikatakana = 0x30f0;\n  t.wikorean = 0x315f;\n  t.wmonospace = 0xff57;\n  t.wohiragana = 0x3092;\n  t.wokatakana = 0x30f2;\n  t.wokatakanahalfwidth = 0xff66;\n  t.won = 0x20a9;\n  t.wonmonospace = 0xffe6;\n  t.wowaenthai = 0x0e27;\n  t.wparen = 0x24b2;\n  t.wring = 0x1e98;\n  t.wsuperior = 0x02b7;\n  t.wturned = 0x028d;\n  t.wynn = 0x01bf;\n  t.x = 0x0078;\n  t.xabovecmb = 0x033d;\n  t.xbopomofo = 0x3112;\n  t.xcircle = 0x24e7;\n  t.xdieresis = 0x1e8d;\n  t.xdotaccent = 0x1e8b;\n  t.xeharmenian = 0x056d;\n  t.xi = 0x03be;\n  t.xmonospace = 0xff58;\n  t.xparen = 0x24b3;\n  t.xsuperior = 0x02e3;\n  t.y = 0x0079;\n  t.yaadosquare = 0x334e;\n  t.yabengali = 0x09af;\n  t.yacute = 0x00fd;\n  t.yadeva = 0x092f;\n  t.yaekorean = 0x3152;\n  t.yagujarati = 0x0aaf;\n  t.yagurmukhi = 0x0a2f;\n  t.yahiragana = 0x3084;\n  t.yakatakana = 0x30e4;\n  t.yakatakanahalfwidth = 0xff94;\n  t.yakorean = 0x3151;\n  t.yamakkanthai = 0x0e4e;\n  t.yasmallhiragana = 0x3083;\n  t.yasmallkatakana = 0x30e3;\n  t.yasmallkatakanahalfwidth = 0xff6c;\n  t.yatcyrillic = 0x0463;\n  t.ycircle = 0x24e8;\n  t.ycircumflex = 0x0177;\n  t.ydieresis = 0x00ff;\n  t.ydotaccent = 0x1e8f;\n  t.ydotbelow = 0x1ef5;\n  t.yeharabic = 0x064a;\n  t.yehbarreearabic = 0x06d2;\n  t.yehbarreefinalarabic = 0xfbaf;\n  t.yehfinalarabic = 0xfef2;\n  t.yehhamzaabovearabic = 0x0626;\n  t.yehhamzaabovefinalarabic = 0xfe8a;\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\n  t.yehhamzaabovemedialarabic = 0xfe8c;\n  t.yehinitialarabic = 0xfef3;\n  t.yehmedialarabic = 0xfef4;\n  t.yehmeeminitialarabic = 0xfcdd;\n  t.yehmeemisolatedarabic = 0xfc58;\n  t.yehnoonfinalarabic = 0xfc94;\n  t.yehthreedotsbelowarabic = 0x06d1;\n  t.yekorean = 0x3156;\n  t.yen = 0x00a5;\n  t.yenmonospace = 0xffe5;\n  t.yeokorean = 0x3155;\n  t.yeorinhieuhkorean = 0x3186;\n  t.yerahbenyomohebrew = 0x05aa;\n  t.yerahbenyomolefthebrew = 0x05aa;\n  t.yericyrillic = 0x044b;\n  t.yerudieresiscyrillic = 0x04f9;\n  t.yesieungkorean = 0x3181;\n  t.yesieungpansioskorean = 0x3183;\n  t.yesieungsioskorean = 0x3182;\n  t.yetivhebrew = 0x059a;\n  t.ygrave = 0x1ef3;\n  t.yhook = 0x01b4;\n  t.yhookabove = 0x1ef7;\n  t.yiarmenian = 0x0575;\n  t.yicyrillic = 0x0457;\n  t.yikorean = 0x3162;\n  t.yinyang = 0x262f;\n  t.yiwnarmenian = 0x0582;\n  t.ymonospace = 0xff59;\n  t.yod = 0x05d9;\n  t.yoddagesh = 0xfb39;\n  t.yoddageshhebrew = 0xfb39;\n  t.yodhebrew = 0x05d9;\n  t.yodyodhebrew = 0x05f2;\n  t.yodyodpatahhebrew = 0xfb1f;\n  t.yohiragana = 0x3088;\n  t.yoikorean = 0x3189;\n  t.yokatakana = 0x30e8;\n  t.yokatakanahalfwidth = 0xff96;\n  t.yokorean = 0x315b;\n  t.yosmallhiragana = 0x3087;\n  t.yosmallkatakana = 0x30e7;\n  t.yosmallkatakanahalfwidth = 0xff6e;\n  t.yotgreek = 0x03f3;\n  t.yoyaekorean = 0x3188;\n  t.yoyakorean = 0x3187;\n  t.yoyakthai = 0x0e22;\n  t.yoyingthai = 0x0e0d;\n  t.yparen = 0x24b4;\n  t.ypogegrammeni = 0x037a;\n  t.ypogegrammenigreekcmb = 0x0345;\n  t.yr = 0x01a6;\n  t.yring = 0x1e99;\n  t.ysuperior = 0x02b8;\n  t.ytilde = 0x1ef9;\n  t.yturned = 0x028e;\n  t.yuhiragana = 0x3086;\n  t.yuikorean = 0x318c;\n  t.yukatakana = 0x30e6;\n  t.yukatakanahalfwidth = 0xff95;\n  t.yukorean = 0x3160;\n  t.yusbigcyrillic = 0x046b;\n  t.yusbigiotifiedcyrillic = 0x046d;\n  t.yuslittlecyrillic = 0x0467;\n  t.yuslittleiotifiedcyrillic = 0x0469;\n  t.yusmallhiragana = 0x3085;\n  t.yusmallkatakana = 0x30e5;\n  t.yusmallkatakanahalfwidth = 0xff6d;\n  t.yuyekorean = 0x318b;\n  t.yuyeokorean = 0x318a;\n  t.yyabengali = 0x09df;\n  t.yyadeva = 0x095f;\n  t.z = 0x007a;\n  t.zaarmenian = 0x0566;\n  t.zacute = 0x017a;\n  t.zadeva = 0x095b;\n  t.zagurmukhi = 0x0a5b;\n  t.zaharabic = 0x0638;\n  t.zahfinalarabic = 0xfec6;\n  t.zahinitialarabic = 0xfec7;\n  t.zahiragana = 0x3056;\n  t.zahmedialarabic = 0xfec8;\n  t.zainarabic = 0x0632;\n  t.zainfinalarabic = 0xfeb0;\n  t.zakatakana = 0x30b6;\n  t.zaqefgadolhebrew = 0x0595;\n  t.zaqefqatanhebrew = 0x0594;\n  t.zarqahebrew = 0x0598;\n  t.zayin = 0x05d6;\n  t.zayindagesh = 0xfb36;\n  t.zayindageshhebrew = 0xfb36;\n  t.zayinhebrew = 0x05d6;\n  t.zbopomofo = 0x3117;\n  t.zcaron = 0x017e;\n  t.zcircle = 0x24e9;\n  t.zcircumflex = 0x1e91;\n  t.zcurl = 0x0291;\n  t.zdot = 0x017c;\n  t.zdotaccent = 0x017c;\n  t.zdotbelow = 0x1e93;\n  t.zecyrillic = 0x0437;\n  t.zedescendercyrillic = 0x0499;\n  t.zedieresiscyrillic = 0x04df;\n  t.zehiragana = 0x305c;\n  t.zekatakana = 0x30bc;\n  t.zero = 0x0030;\n  t.zeroarabic = 0x0660;\n  t.zerobengali = 0x09e6;\n  t.zerodeva = 0x0966;\n  t.zerogujarati = 0x0ae6;\n  t.zerogurmukhi = 0x0a66;\n  t.zerohackarabic = 0x0660;\n  t.zeroinferior = 0x2080;\n  t.zeromonospace = 0xff10;\n  t.zerooldstyle = 0xf730;\n  t.zeropersian = 0x06f0;\n  t.zerosuperior = 0x2070;\n  t.zerothai = 0x0e50;\n  t.zerowidthjoiner = 0xfeff;\n  t.zerowidthnonjoiner = 0x200c;\n  t.zerowidthspace = 0x200b;\n  t.zeta = 0x03b6;\n  t.zhbopomofo = 0x3113;\n  t.zhearmenian = 0x056a;\n  t.zhebrevecyrillic = 0x04c2;\n  t.zhecyrillic = 0x0436;\n  t.zhedescendercyrillic = 0x0497;\n  t.zhedieresiscyrillic = 0x04dd;\n  t.zihiragana = 0x3058;\n  t.zikatakana = 0x30b8;\n  t.zinorhebrew = 0x05ae;\n  t.zlinebelow = 0x1e95;\n  t.zmonospace = 0xff5a;\n  t.zohiragana = 0x305e;\n  t.zokatakana = 0x30be;\n  t.zparen = 0x24b5;\n  t.zretroflexhook = 0x0290;\n  t.zstroke = 0x01b6;\n  t.zuhiragana = 0x305a;\n  t.zukatakana = 0x30ba;\n  t[\".notdef\"] = 0x0000;\n\n  // TeX-specific glyph names.\n  t.angbracketleftbig = 0x2329;\n  t.angbracketleftBig = 0x2329;\n  t.angbracketleftbigg = 0x2329;\n  t.angbracketleftBigg = 0x2329;\n  t.angbracketrightBig = 0x232a;\n  t.angbracketrightbig = 0x232a;\n  t.angbracketrightBigg = 0x232a;\n  t.angbracketrightbigg = 0x232a;\n  t.arrowhookleft = 0x21aa;\n  t.arrowhookright = 0x21a9;\n  t.arrowlefttophalf = 0x21bc;\n  t.arrowleftbothalf = 0x21bd;\n  t.arrownortheast = 0x2197;\n  t.arrownorthwest = 0x2196;\n  t.arrowrighttophalf = 0x21c0;\n  t.arrowrightbothalf = 0x21c1;\n  t.arrowsoutheast = 0x2198;\n  t.arrowsouthwest = 0x2199;\n  t.backslashbig = 0x2216;\n  t.backslashBig = 0x2216;\n  t.backslashBigg = 0x2216;\n  t.backslashbigg = 0x2216;\n  t.bardbl = 0x2016;\n  t.bracehtipdownleft = 0xfe37;\n  t.bracehtipdownright = 0xfe37;\n  t.bracehtipupleft = 0xfe38;\n  t.bracehtipupright = 0xfe38;\n  t.braceleftBig = 0x007b;\n  t.braceleftbig = 0x007b;\n  t.braceleftbigg = 0x007b;\n  t.braceleftBigg = 0x007b;\n  t.bracerightBig = 0x007d;\n  t.bracerightbig = 0x007d;\n  t.bracerightbigg = 0x007d;\n  t.bracerightBigg = 0x007d;\n  t.bracketleftbig = 0x005b;\n  t.bracketleftBig = 0x005b;\n  t.bracketleftbigg = 0x005b;\n  t.bracketleftBigg = 0x005b;\n  t.bracketrightBig = 0x005d;\n  t.bracketrightbig = 0x005d;\n  t.bracketrightbigg = 0x005d;\n  t.bracketrightBigg = 0x005d;\n  t.ceilingleftbig = 0x2308;\n  t.ceilingleftBig = 0x2308;\n  t.ceilingleftBigg = 0x2308;\n  t.ceilingleftbigg = 0x2308;\n  t.ceilingrightbig = 0x2309;\n  t.ceilingrightBig = 0x2309;\n  t.ceilingrightbigg = 0x2309;\n  t.ceilingrightBigg = 0x2309;\n  t.circledotdisplay = 0x2299;\n  t.circledottext = 0x2299;\n  t.circlemultiplydisplay = 0x2297;\n  t.circlemultiplytext = 0x2297;\n  t.circleplusdisplay = 0x2295;\n  t.circleplustext = 0x2295;\n  t.contintegraldisplay = 0x222e;\n  t.contintegraltext = 0x222e;\n  t.coproductdisplay = 0x2210;\n  t.coproducttext = 0x2210;\n  t.floorleftBig = 0x230a;\n  t.floorleftbig = 0x230a;\n  t.floorleftbigg = 0x230a;\n  t.floorleftBigg = 0x230a;\n  t.floorrightbig = 0x230b;\n  t.floorrightBig = 0x230b;\n  t.floorrightBigg = 0x230b;\n  t.floorrightbigg = 0x230b;\n  t.hatwide = 0x0302;\n  t.hatwider = 0x0302;\n  t.hatwidest = 0x0302;\n  t.intercal = 0x1d40;\n  t.integraldisplay = 0x222b;\n  t.integraltext = 0x222b;\n  t.intersectiondisplay = 0x22c2;\n  t.intersectiontext = 0x22c2;\n  t.logicalanddisplay = 0x2227;\n  t.logicalandtext = 0x2227;\n  t.logicalordisplay = 0x2228;\n  t.logicalortext = 0x2228;\n  t.parenleftBig = 0x0028;\n  t.parenleftbig = 0x0028;\n  t.parenleftBigg = 0x0028;\n  t.parenleftbigg = 0x0028;\n  t.parenrightBig = 0x0029;\n  t.parenrightbig = 0x0029;\n  t.parenrightBigg = 0x0029;\n  t.parenrightbigg = 0x0029;\n  t.prime = 0x2032;\n  t.productdisplay = 0x220f;\n  t.producttext = 0x220f;\n  t.radicalbig = 0x221a;\n  t.radicalBig = 0x221a;\n  t.radicalBigg = 0x221a;\n  t.radicalbigg = 0x221a;\n  t.radicalbt = 0x221a;\n  t.radicaltp = 0x221a;\n  t.radicalvertex = 0x221a;\n  t.slashbig = 0x002f;\n  t.slashBig = 0x002f;\n  t.slashBigg = 0x002f;\n  t.slashbigg = 0x002f;\n  t.summationdisplay = 0x2211;\n  t.summationtext = 0x2211;\n  t.tildewide = 0x02dc;\n  t.tildewider = 0x02dc;\n  t.tildewidest = 0x02dc;\n  t.uniondisplay = 0x22c3;\n  t.unionmultidisplay = 0x228e;\n  t.unionmultitext = 0x228e;\n  t.unionsqdisplay = 0x2294;\n  t.unionsqtext = 0x2294;\n  t.uniontext = 0x22c3;\n  t.vextenddouble = 0x2225;\n  t.vextendsingle = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.space = 0x0020;\n  t.a1 = 0x2701;\n  t.a2 = 0x2702;\n  t.a202 = 0x2703;\n  t.a3 = 0x2704;\n  t.a4 = 0x260e;\n  t.a5 = 0x2706;\n  t.a119 = 0x2707;\n  t.a118 = 0x2708;\n  t.a117 = 0x2709;\n  t.a11 = 0x261b;\n  t.a12 = 0x261e;\n  t.a13 = 0x270c;\n  t.a14 = 0x270d;\n  t.a15 = 0x270e;\n  t.a16 = 0x270f;\n  t.a105 = 0x2710;\n  t.a17 = 0x2711;\n  t.a18 = 0x2712;\n  t.a19 = 0x2713;\n  t.a20 = 0x2714;\n  t.a21 = 0x2715;\n  t.a22 = 0x2716;\n  t.a23 = 0x2717;\n  t.a24 = 0x2718;\n  t.a25 = 0x2719;\n  t.a26 = 0x271a;\n  t.a27 = 0x271b;\n  t.a28 = 0x271c;\n  t.a6 = 0x271d;\n  t.a7 = 0x271e;\n  t.a8 = 0x271f;\n  t.a9 = 0x2720;\n  t.a10 = 0x2721;\n  t.a29 = 0x2722;\n  t.a30 = 0x2723;\n  t.a31 = 0x2724;\n  t.a32 = 0x2725;\n  t.a33 = 0x2726;\n  t.a34 = 0x2727;\n  t.a35 = 0x2605;\n  t.a36 = 0x2729;\n  t.a37 = 0x272a;\n  t.a38 = 0x272b;\n  t.a39 = 0x272c;\n  t.a40 = 0x272d;\n  t.a41 = 0x272e;\n  t.a42 = 0x272f;\n  t.a43 = 0x2730;\n  t.a44 = 0x2731;\n  t.a45 = 0x2732;\n  t.a46 = 0x2733;\n  t.a47 = 0x2734;\n  t.a48 = 0x2735;\n  t.a49 = 0x2736;\n  t.a50 = 0x2737;\n  t.a51 = 0x2738;\n  t.a52 = 0x2739;\n  t.a53 = 0x273a;\n  t.a54 = 0x273b;\n  t.a55 = 0x273c;\n  t.a56 = 0x273d;\n  t.a57 = 0x273e;\n  t.a58 = 0x273f;\n  t.a59 = 0x2740;\n  t.a60 = 0x2741;\n  t.a61 = 0x2742;\n  t.a62 = 0x2743;\n  t.a63 = 0x2744;\n  t.a64 = 0x2745;\n  t.a65 = 0x2746;\n  t.a66 = 0x2747;\n  t.a67 = 0x2748;\n  t.a68 = 0x2749;\n  t.a69 = 0x274a;\n  t.a70 = 0x274b;\n  t.a71 = 0x25cf;\n  t.a72 = 0x274d;\n  t.a73 = 0x25a0;\n  t.a74 = 0x274f;\n  t.a203 = 0x2750;\n  t.a75 = 0x2751;\n  t.a204 = 0x2752;\n  t.a76 = 0x25b2;\n  t.a77 = 0x25bc;\n  t.a78 = 0x25c6;\n  t.a79 = 0x2756;\n  t.a81 = 0x25d7;\n  t.a82 = 0x2758;\n  t.a83 = 0x2759;\n  t.a84 = 0x275a;\n  t.a97 = 0x275b;\n  t.a98 = 0x275c;\n  t.a99 = 0x275d;\n  t.a100 = 0x275e;\n  t.a101 = 0x2761;\n  t.a102 = 0x2762;\n  t.a103 = 0x2763;\n  t.a104 = 0x2764;\n  t.a106 = 0x2765;\n  t.a107 = 0x2766;\n  t.a108 = 0x2767;\n  t.a112 = 0x2663;\n  t.a111 = 0x2666;\n  t.a110 = 0x2665;\n  t.a109 = 0x2660;\n  t.a120 = 0x2460;\n  t.a121 = 0x2461;\n  t.a122 = 0x2462;\n  t.a123 = 0x2463;\n  t.a124 = 0x2464;\n  t.a125 = 0x2465;\n  t.a126 = 0x2466;\n  t.a127 = 0x2467;\n  t.a128 = 0x2468;\n  t.a129 = 0x2469;\n  t.a130 = 0x2776;\n  t.a131 = 0x2777;\n  t.a132 = 0x2778;\n  t.a133 = 0x2779;\n  t.a134 = 0x277a;\n  t.a135 = 0x277b;\n  t.a136 = 0x277c;\n  t.a137 = 0x277d;\n  t.a138 = 0x277e;\n  t.a139 = 0x277f;\n  t.a140 = 0x2780;\n  t.a141 = 0x2781;\n  t.a142 = 0x2782;\n  t.a143 = 0x2783;\n  t.a144 = 0x2784;\n  t.a145 = 0x2785;\n  t.a146 = 0x2786;\n  t.a147 = 0x2787;\n  t.a148 = 0x2788;\n  t.a149 = 0x2789;\n  t.a150 = 0x278a;\n  t.a151 = 0x278b;\n  t.a152 = 0x278c;\n  t.a153 = 0x278d;\n  t.a154 = 0x278e;\n  t.a155 = 0x278f;\n  t.a156 = 0x2790;\n  t.a157 = 0x2791;\n  t.a158 = 0x2792;\n  t.a159 = 0x2793;\n  t.a160 = 0x2794;\n  t.a161 = 0x2192;\n  t.a163 = 0x2194;\n  t.a164 = 0x2195;\n  t.a196 = 0x2798;\n  t.a165 = 0x2799;\n  t.a192 = 0x279a;\n  t.a166 = 0x279b;\n  t.a167 = 0x279c;\n  t.a168 = 0x279d;\n  t.a169 = 0x279e;\n  t.a170 = 0x279f;\n  t.a171 = 0x27a0;\n  t.a172 = 0x27a1;\n  t.a173 = 0x27a2;\n  t.a162 = 0x27a3;\n  t.a174 = 0x27a4;\n  t.a175 = 0x27a5;\n  t.a176 = 0x27a6;\n  t.a177 = 0x27a7;\n  t.a178 = 0x27a8;\n  t.a179 = 0x27a9;\n  t.a193 = 0x27aa;\n  t.a180 = 0x27ab;\n  t.a199 = 0x27ac;\n  t.a181 = 0x27ad;\n  t.a200 = 0x27ae;\n  t.a182 = 0x27af;\n  t.a201 = 0x27b1;\n  t.a183 = 0x27b2;\n  t.a184 = 0x27b3;\n  t.a197 = 0x27b4;\n  t.a185 = 0x27b5;\n  t.a194 = 0x27b6;\n  t.a198 = 0x27b7;\n  t.a186 = 0x27b8;\n  t.a195 = 0x27b9;\n  t.a187 = 0x27ba;\n  t.a188 = 0x27bb;\n  t.a189 = 0x27bc;\n  t.a190 = 0x27bd;\n  t.a191 = 0x27be;\n  t.a89 = 0x2768; // 0xF8D7\n  t.a90 = 0x2769; // 0xF8D8\n  t.a93 = 0x276a; // 0xF8D9\n  t.a94 = 0x276b; // 0xF8DA\n  t.a91 = 0x276c; // 0xF8DB\n  t.a92 = 0x276d; // 0xF8DC\n  t.a205 = 0x276e; // 0xF8DD\n  t.a85 = 0x276f; // 0xF8DE\n  t.a206 = 0x2770; // 0xF8DF\n  t.a86 = 0x2771; // 0xF8E0\n  t.a87 = 0x2772; // 0xF8E1\n  t.a88 = 0x2773; // 0xF8E2\n  t.a95 = 0x2774; // 0xF8E3\n  t.a96 = 0x2775; // 0xF8E4\n  t[\".notdef\"] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\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/* eslint no-var: error */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t.Helvetica = \"Helvetica\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[227] = 353;\n  t[229] = 382;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n  t\n) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[17] = 66;\n  t[18] = 67;\n  t[24] = 68;\n  t[28] = 69;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[94] = 83;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[127] = 90;\n  t[258] = 97;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[282] = 100;\n  t[286] = 101;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[400] = 115;\n  t[401] = 347;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[460] = 122;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nexport {\n  getStdFontMap,\n  getNonStdFontMap,\n  getSerifFonts,\n  getSymbolsFonts,\n  getGlyphMapForStandardFonts,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n};\n","/* Copyright 2016 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/* no-babel-preset */\n\nvar getLookupTableFactory = require(\"./core_utils.js\").getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  var unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    var nameLen = name.length,\n      hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nvar UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    var range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  var range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n  t[\"\\u00A8\"] = \"\\u0020\\u0308\";\n  t[\"\\u00AF\"] = \"\\u0020\\u0304\";\n  t[\"\\u00B4\"] = \"\\u0020\\u0301\";\n  t[\"\\u00B5\"] = \"\\u03BC\";\n  t[\"\\u00B8\"] = \"\\u0020\\u0327\";\n  t[\"\\u0132\"] = \"\\u0049\\u004A\";\n  t[\"\\u0133\"] = \"\\u0069\\u006A\";\n  t[\"\\u013F\"] = \"\\u004C\\u00B7\";\n  t[\"\\u0140\"] = \"\\u006C\\u00B7\";\n  t[\"\\u0149\"] = \"\\u02BC\\u006E\";\n  t[\"\\u017F\"] = \"\\u0073\";\n  t[\"\\u01C4\"] = \"\\u0044\\u017D\";\n  t[\"\\u01C5\"] = \"\\u0044\\u017E\";\n  t[\"\\u01C6\"] = \"\\u0064\\u017E\";\n  t[\"\\u01C7\"] = \"\\u004C\\u004A\";\n  t[\"\\u01C8\"] = \"\\u004C\\u006A\";\n  t[\"\\u01C9\"] = \"\\u006C\\u006A\";\n  t[\"\\u01CA\"] = \"\\u004E\\u004A\";\n  t[\"\\u01CB\"] = \"\\u004E\\u006A\";\n  t[\"\\u01CC\"] = \"\\u006E\\u006A\";\n  t[\"\\u01F1\"] = \"\\u0044\\u005A\";\n  t[\"\\u01F2\"] = \"\\u0044\\u007A\";\n  t[\"\\u01F3\"] = \"\\u0064\\u007A\";\n  t[\"\\u02D8\"] = \"\\u0020\\u0306\";\n  t[\"\\u02D9\"] = \"\\u0020\\u0307\";\n  t[\"\\u02DA\"] = \"\\u0020\\u030A\";\n  t[\"\\u02DB\"] = \"\\u0020\\u0328\";\n  t[\"\\u02DC\"] = \"\\u0020\\u0303\";\n  t[\"\\u02DD\"] = \"\\u0020\\u030B\";\n  t[\"\\u037A\"] = \"\\u0020\\u0345\";\n  t[\"\\u0384\"] = \"\\u0020\\u0301\";\n  t[\"\\u03D0\"] = \"\\u03B2\";\n  t[\"\\u03D1\"] = \"\\u03B8\";\n  t[\"\\u03D2\"] = \"\\u03A5\";\n  t[\"\\u03D5\"] = \"\\u03C6\";\n  t[\"\\u03D6\"] = \"\\u03C0\";\n  t[\"\\u03F0\"] = \"\\u03BA\";\n  t[\"\\u03F1\"] = \"\\u03C1\";\n  t[\"\\u03F2\"] = \"\\u03C2\";\n  t[\"\\u03F4\"] = \"\\u0398\";\n  t[\"\\u03F5\"] = \"\\u03B5\";\n  t[\"\\u03F9\"] = \"\\u03A3\";\n  t[\"\\u0587\"] = \"\\u0565\\u0582\";\n  t[\"\\u0675\"] = \"\\u0627\\u0674\";\n  t[\"\\u0676\"] = \"\\u0648\\u0674\";\n  t[\"\\u0677\"] = \"\\u06C7\\u0674\";\n  t[\"\\u0678\"] = \"\\u064A\\u0674\";\n  t[\"\\u0E33\"] = \"\\u0E4D\\u0E32\";\n  t[\"\\u0EB3\"] = \"\\u0ECD\\u0EB2\";\n  t[\"\\u0EDC\"] = \"\\u0EAB\\u0E99\";\n  t[\"\\u0EDD\"] = \"\\u0EAB\\u0EA1\";\n  t[\"\\u0F77\"] = \"\\u0FB2\\u0F81\";\n  t[\"\\u0F79\"] = \"\\u0FB3\\u0F81\";\n  t[\"\\u1E9A\"] = \"\\u0061\\u02BE\";\n  t[\"\\u1FBD\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FBF\"] = \"\\u0020\\u0313\";\n  t[\"\\u1FC0\"] = \"\\u0020\\u0342\";\n  t[\"\\u1FFE\"] = \"\\u0020\\u0314\";\n  t[\"\\u2002\"] = \"\\u0020\";\n  t[\"\\u2003\"] = \"\\u0020\";\n  t[\"\\u2004\"] = \"\\u0020\";\n  t[\"\\u2005\"] = \"\\u0020\";\n  t[\"\\u2006\"] = \"\\u0020\";\n  t[\"\\u2008\"] = \"\\u0020\";\n  t[\"\\u2009\"] = \"\\u0020\";\n  t[\"\\u200A\"] = \"\\u0020\";\n  t[\"\\u2017\"] = \"\\u0020\\u0333\";\n  t[\"\\u2024\"] = \"\\u002E\";\n  t[\"\\u2025\"] = \"\\u002E\\u002E\";\n  t[\"\\u2026\"] = \"\\u002E\\u002E\\u002E\";\n  t[\"\\u2033\"] = \"\\u2032\\u2032\";\n  t[\"\\u2034\"] = \"\\u2032\\u2032\\u2032\";\n  t[\"\\u2036\"] = \"\\u2035\\u2035\";\n  t[\"\\u2037\"] = \"\\u2035\\u2035\\u2035\";\n  t[\"\\u203C\"] = \"\\u0021\\u0021\";\n  t[\"\\u203E\"] = \"\\u0020\\u0305\";\n  t[\"\\u2047\"] = \"\\u003F\\u003F\";\n  t[\"\\u2048\"] = \"\\u003F\\u0021\";\n  t[\"\\u2049\"] = \"\\u0021\\u003F\";\n  t[\"\\u2057\"] = \"\\u2032\\u2032\\u2032\\u2032\";\n  t[\"\\u205F\"] = \"\\u0020\";\n  t[\"\\u20A8\"] = \"\\u0052\\u0073\";\n  t[\"\\u2100\"] = \"\\u0061\\u002F\\u0063\";\n  t[\"\\u2101\"] = \"\\u0061\\u002F\\u0073\";\n  t[\"\\u2103\"] = \"\\u00B0\\u0043\";\n  t[\"\\u2105\"] = \"\\u0063\\u002F\\u006F\";\n  t[\"\\u2106\"] = \"\\u0063\\u002F\\u0075\";\n  t[\"\\u2107\"] = \"\\u0190\";\n  t[\"\\u2109\"] = \"\\u00B0\\u0046\";\n  t[\"\\u2116\"] = \"\\u004E\\u006F\";\n  t[\"\\u2121\"] = \"\\u0054\\u0045\\u004C\";\n  t[\"\\u2135\"] = \"\\u05D0\";\n  t[\"\\u2136\"] = \"\\u05D1\";\n  t[\"\\u2137\"] = \"\\u05D2\";\n  t[\"\\u2138\"] = \"\\u05D3\";\n  t[\"\\u213B\"] = \"\\u0046\\u0041\\u0058\";\n  t[\"\\u2160\"] = \"\\u0049\";\n  t[\"\\u2161\"] = \"\\u0049\\u0049\";\n  t[\"\\u2162\"] = \"\\u0049\\u0049\\u0049\";\n  t[\"\\u2163\"] = \"\\u0049\\u0056\";\n  t[\"\\u2164\"] = \"\\u0056\";\n  t[\"\\u2165\"] = \"\\u0056\\u0049\";\n  t[\"\\u2166\"] = \"\\u0056\\u0049\\u0049\";\n  t[\"\\u2167\"] = \"\\u0056\\u0049\\u0049\\u0049\";\n  t[\"\\u2168\"] = \"\\u0049\\u0058\";\n  t[\"\\u2169\"] = \"\\u0058\";\n  t[\"\\u216A\"] = \"\\u0058\\u0049\";\n  t[\"\\u216B\"] = \"\\u0058\\u0049\\u0049\";\n  t[\"\\u216C\"] = \"\\u004C\";\n  t[\"\\u216D\"] = \"\\u0043\";\n  t[\"\\u216E\"] = \"\\u0044\";\n  t[\"\\u216F\"] = \"\\u004D\";\n  t[\"\\u2170\"] = \"\\u0069\";\n  t[\"\\u2171\"] = \"\\u0069\\u0069\";\n  t[\"\\u2172\"] = \"\\u0069\\u0069\\u0069\";\n  t[\"\\u2173\"] = \"\\u0069\\u0076\";\n  t[\"\\u2174\"] = \"\\u0076\";\n  t[\"\\u2175\"] = \"\\u0076\\u0069\";\n  t[\"\\u2176\"] = \"\\u0076\\u0069\\u0069\";\n  t[\"\\u2177\"] = \"\\u0076\\u0069\\u0069\\u0069\";\n  t[\"\\u2178\"] = \"\\u0069\\u0078\";\n  t[\"\\u2179\"] = \"\\u0078\";\n  t[\"\\u217A\"] = \"\\u0078\\u0069\";\n  t[\"\\u217B\"] = \"\\u0078\\u0069\\u0069\";\n  t[\"\\u217C\"] = \"\\u006C\";\n  t[\"\\u217D\"] = \"\\u0063\";\n  t[\"\\u217E\"] = \"\\u0064\";\n  t[\"\\u217F\"] = \"\\u006D\";\n  t[\"\\u222C\"] = \"\\u222B\\u222B\";\n  t[\"\\u222D\"] = \"\\u222B\\u222B\\u222B\";\n  t[\"\\u222F\"] = \"\\u222E\\u222E\";\n  t[\"\\u2230\"] = \"\\u222E\\u222E\\u222E\";\n  t[\"\\u2474\"] = \"\\u0028\\u0031\\u0029\";\n  t[\"\\u2475\"] = \"\\u0028\\u0032\\u0029\";\n  t[\"\\u2476\"] = \"\\u0028\\u0033\\u0029\";\n  t[\"\\u2477\"] = \"\\u0028\\u0034\\u0029\";\n  t[\"\\u2478\"] = \"\\u0028\\u0035\\u0029\";\n  t[\"\\u2479\"] = \"\\u0028\\u0036\\u0029\";\n  t[\"\\u247A\"] = \"\\u0028\\u0037\\u0029\";\n  t[\"\\u247B\"] = \"\\u0028\\u0038\\u0029\";\n  t[\"\\u247C\"] = \"\\u0028\\u0039\\u0029\";\n  t[\"\\u247D\"] = \"\\u0028\\u0031\\u0030\\u0029\";\n  t[\"\\u247E\"] = \"\\u0028\\u0031\\u0031\\u0029\";\n  t[\"\\u247F\"] = \"\\u0028\\u0031\\u0032\\u0029\";\n  t[\"\\u2480\"] = \"\\u0028\\u0031\\u0033\\u0029\";\n  t[\"\\u2481\"] = \"\\u0028\\u0031\\u0034\\u0029\";\n  t[\"\\u2482\"] = \"\\u0028\\u0031\\u0035\\u0029\";\n  t[\"\\u2483\"] = \"\\u0028\\u0031\\u0036\\u0029\";\n  t[\"\\u2484\"] = \"\\u0028\\u0031\\u0037\\u0029\";\n  t[\"\\u2485\"] = \"\\u0028\\u0031\\u0038\\u0029\";\n  t[\"\\u2486\"] = \"\\u0028\\u0031\\u0039\\u0029\";\n  t[\"\\u2487\"] = \"\\u0028\\u0032\\u0030\\u0029\";\n  t[\"\\u2488\"] = \"\\u0031\\u002E\";\n  t[\"\\u2489\"] = \"\\u0032\\u002E\";\n  t[\"\\u248A\"] = \"\\u0033\\u002E\";\n  t[\"\\u248B\"] = \"\\u0034\\u002E\";\n  t[\"\\u248C\"] = \"\\u0035\\u002E\";\n  t[\"\\u248D\"] = \"\\u0036\\u002E\";\n  t[\"\\u248E\"] = \"\\u0037\\u002E\";\n  t[\"\\u248F\"] = \"\\u0038\\u002E\";\n  t[\"\\u2490\"] = \"\\u0039\\u002E\";\n  t[\"\\u2491\"] = \"\\u0031\\u0030\\u002E\";\n  t[\"\\u2492\"] = \"\\u0031\\u0031\\u002E\";\n  t[\"\\u2493\"] = \"\\u0031\\u0032\\u002E\";\n  t[\"\\u2494\"] = \"\\u0031\\u0033\\u002E\";\n  t[\"\\u2495\"] = \"\\u0031\\u0034\\u002E\";\n  t[\"\\u2496\"] = \"\\u0031\\u0035\\u002E\";\n  t[\"\\u2497\"] = \"\\u0031\\u0036\\u002E\";\n  t[\"\\u2498\"] = \"\\u0031\\u0037\\u002E\";\n  t[\"\\u2499\"] = \"\\u0031\\u0038\\u002E\";\n  t[\"\\u249A\"] = \"\\u0031\\u0039\\u002E\";\n  t[\"\\u249B\"] = \"\\u0032\\u0030\\u002E\";\n  t[\"\\u249C\"] = \"\\u0028\\u0061\\u0029\";\n  t[\"\\u249D\"] = \"\\u0028\\u0062\\u0029\";\n  t[\"\\u249E\"] = \"\\u0028\\u0063\\u0029\";\n  t[\"\\u249F\"] = \"\\u0028\\u0064\\u0029\";\n  t[\"\\u24A0\"] = \"\\u0028\\u0065\\u0029\";\n  t[\"\\u24A1\"] = \"\\u0028\\u0066\\u0029\";\n  t[\"\\u24A2\"] = \"\\u0028\\u0067\\u0029\";\n  t[\"\\u24A3\"] = \"\\u0028\\u0068\\u0029\";\n  t[\"\\u24A4\"] = \"\\u0028\\u0069\\u0029\";\n  t[\"\\u24A5\"] = \"\\u0028\\u006A\\u0029\";\n  t[\"\\u24A6\"] = \"\\u0028\\u006B\\u0029\";\n  t[\"\\u24A7\"] = \"\\u0028\\u006C\\u0029\";\n  t[\"\\u24A8\"] = \"\\u0028\\u006D\\u0029\";\n  t[\"\\u24A9\"] = \"\\u0028\\u006E\\u0029\";\n  t[\"\\u24AA\"] = \"\\u0028\\u006F\\u0029\";\n  t[\"\\u24AB\"] = \"\\u0028\\u0070\\u0029\";\n  t[\"\\u24AC\"] = \"\\u0028\\u0071\\u0029\";\n  t[\"\\u24AD\"] = \"\\u0028\\u0072\\u0029\";\n  t[\"\\u24AE\"] = \"\\u0028\\u0073\\u0029\";\n  t[\"\\u24AF\"] = \"\\u0028\\u0074\\u0029\";\n  t[\"\\u24B0\"] = \"\\u0028\\u0075\\u0029\";\n  t[\"\\u24B1\"] = \"\\u0028\\u0076\\u0029\";\n  t[\"\\u24B2\"] = \"\\u0028\\u0077\\u0029\";\n  t[\"\\u24B3\"] = \"\\u0028\\u0078\\u0029\";\n  t[\"\\u24B4\"] = \"\\u0028\\u0079\\u0029\";\n  t[\"\\u24B5\"] = \"\\u0028\\u007A\\u0029\";\n  t[\"\\u2A0C\"] = \"\\u222B\\u222B\\u222B\\u222B\";\n  t[\"\\u2A74\"] = \"\\u003A\\u003A\\u003D\";\n  t[\"\\u2A75\"] = \"\\u003D\\u003D\";\n  t[\"\\u2A76\"] = \"\\u003D\\u003D\\u003D\";\n  t[\"\\u2E9F\"] = \"\\u6BCD\";\n  t[\"\\u2EF3\"] = \"\\u9F9F\";\n  t[\"\\u2F00\"] = \"\\u4E00\";\n  t[\"\\u2F01\"] = \"\\u4E28\";\n  t[\"\\u2F02\"] = \"\\u4E36\";\n  t[\"\\u2F03\"] = \"\\u4E3F\";\n  t[\"\\u2F04\"] = \"\\u4E59\";\n  t[\"\\u2F05\"] = \"\\u4E85\";\n  t[\"\\u2F06\"] = \"\\u4E8C\";\n  t[\"\\u2F07\"] = \"\\u4EA0\";\n  t[\"\\u2F08\"] = \"\\u4EBA\";\n  t[\"\\u2F09\"] = \"\\u513F\";\n  t[\"\\u2F0A\"] = \"\\u5165\";\n  t[\"\\u2F0B\"] = \"\\u516B\";\n  t[\"\\u2F0C\"] = \"\\u5182\";\n  t[\"\\u2F0D\"] = \"\\u5196\";\n  t[\"\\u2F0E\"] = \"\\u51AB\";\n  t[\"\\u2F0F\"] = \"\\u51E0\";\n  t[\"\\u2F10\"] = \"\\u51F5\";\n  t[\"\\u2F11\"] = \"\\u5200\";\n  t[\"\\u2F12\"] = \"\\u529B\";\n  t[\"\\u2F13\"] = \"\\u52F9\";\n  t[\"\\u2F14\"] = \"\\u5315\";\n  t[\"\\u2F15\"] = \"\\u531A\";\n  t[\"\\u2F16\"] = \"\\u5338\";\n  t[\"\\u2F17\"] = \"\\u5341\";\n  t[\"\\u2F18\"] = \"\\u535C\";\n  t[\"\\u2F19\"] = \"\\u5369\";\n  t[\"\\u2F1A\"] = \"\\u5382\";\n  t[\"\\u2F1B\"] = \"\\u53B6\";\n  t[\"\\u2F1C\"] = \"\\u53C8\";\n  t[\"\\u2F1D\"] = \"\\u53E3\";\n  t[\"\\u2F1E\"] = \"\\u56D7\";\n  t[\"\\u2F1F\"] = \"\\u571F\";\n  t[\"\\u2F20\"] = \"\\u58EB\";\n  t[\"\\u2F21\"] = \"\\u5902\";\n  t[\"\\u2F22\"] = \"\\u590A\";\n  t[\"\\u2F23\"] = \"\\u5915\";\n  t[\"\\u2F24\"] = \"\\u5927\";\n  t[\"\\u2F25\"] = \"\\u5973\";\n  t[\"\\u2F26\"] = \"\\u5B50\";\n  t[\"\\u2F27\"] = \"\\u5B80\";\n  t[\"\\u2F28\"] = \"\\u5BF8\";\n  t[\"\\u2F29\"] = \"\\u5C0F\";\n  t[\"\\u2F2A\"] = \"\\u5C22\";\n  t[\"\\u2F2B\"] = \"\\u5C38\";\n  t[\"\\u2F2C\"] = \"\\u5C6E\";\n  t[\"\\u2F2D\"] = \"\\u5C71\";\n  t[\"\\u2F2E\"] = \"\\u5DDB\";\n  t[\"\\u2F2F\"] = \"\\u5DE5\";\n  t[\"\\u2F30\"] = \"\\u5DF1\";\n  t[\"\\u2F31\"] = \"\\u5DFE\";\n  t[\"\\u2F32\"] = \"\\u5E72\";\n  t[\"\\u2F33\"] = \"\\u5E7A\";\n  t[\"\\u2F34\"] = \"\\u5E7F\";\n  t[\"\\u2F35\"] = \"\\u5EF4\";\n  t[\"\\u2F36\"] = \"\\u5EFE\";\n  t[\"\\u2F37\"] = \"\\u5F0B\";\n  t[\"\\u2F38\"] = \"\\u5F13\";\n  t[\"\\u2F39\"] = \"\\u5F50\";\n  t[\"\\u2F3A\"] = \"\\u5F61\";\n  t[\"\\u2F3B\"] = \"\\u5F73\";\n  t[\"\\u2F3C\"] = \"\\u5FC3\";\n  t[\"\\u2F3D\"] = \"\\u6208\";\n  t[\"\\u2F3E\"] = \"\\u6236\";\n  t[\"\\u2F3F\"] = \"\\u624B\";\n  t[\"\\u2F40\"] = \"\\u652F\";\n  t[\"\\u2F41\"] = \"\\u6534\";\n  t[\"\\u2F42\"] = \"\\u6587\";\n  t[\"\\u2F43\"] = \"\\u6597\";\n  t[\"\\u2F44\"] = \"\\u65A4\";\n  t[\"\\u2F45\"] = \"\\u65B9\";\n  t[\"\\u2F46\"] = \"\\u65E0\";\n  t[\"\\u2F47\"] = \"\\u65E5\";\n  t[\"\\u2F48\"] = \"\\u66F0\";\n  t[\"\\u2F49\"] = \"\\u6708\";\n  t[\"\\u2F4A\"] = \"\\u6728\";\n  t[\"\\u2F4B\"] = \"\\u6B20\";\n  t[\"\\u2F4C\"] = \"\\u6B62\";\n  t[\"\\u2F4D\"] = \"\\u6B79\";\n  t[\"\\u2F4E\"] = \"\\u6BB3\";\n  t[\"\\u2F4F\"] = \"\\u6BCB\";\n  t[\"\\u2F50\"] = \"\\u6BD4\";\n  t[\"\\u2F51\"] = \"\\u6BDB\";\n  t[\"\\u2F52\"] = \"\\u6C0F\";\n  t[\"\\u2F53\"] = \"\\u6C14\";\n  t[\"\\u2F54\"] = \"\\u6C34\";\n  t[\"\\u2F55\"] = \"\\u706B\";\n  t[\"\\u2F56\"] = \"\\u722A\";\n  t[\"\\u2F57\"] = \"\\u7236\";\n  t[\"\\u2F58\"] = \"\\u723B\";\n  t[\"\\u2F59\"] = \"\\u723F\";\n  t[\"\\u2F5A\"] = \"\\u7247\";\n  t[\"\\u2F5B\"] = \"\\u7259\";\n  t[\"\\u2F5C\"] = \"\\u725B\";\n  t[\"\\u2F5D\"] = \"\\u72AC\";\n  t[\"\\u2F5E\"] = \"\\u7384\";\n  t[\"\\u2F5F\"] = \"\\u7389\";\n  t[\"\\u2F60\"] = \"\\u74DC\";\n  t[\"\\u2F61\"] = \"\\u74E6\";\n  t[\"\\u2F62\"] = \"\\u7518\";\n  t[\"\\u2F63\"] = \"\\u751F\";\n  t[\"\\u2F64\"] = \"\\u7528\";\n  t[\"\\u2F65\"] = \"\\u7530\";\n  t[\"\\u2F66\"] = \"\\u758B\";\n  t[\"\\u2F67\"] = \"\\u7592\";\n  t[\"\\u2F68\"] = \"\\u7676\";\n  t[\"\\u2F69\"] = \"\\u767D\";\n  t[\"\\u2F6A\"] = \"\\u76AE\";\n  t[\"\\u2F6B\"] = \"\\u76BF\";\n  t[\"\\u2F6C\"] = \"\\u76EE\";\n  t[\"\\u2F6D\"] = \"\\u77DB\";\n  t[\"\\u2F6E\"] = \"\\u77E2\";\n  t[\"\\u2F6F\"] = \"\\u77F3\";\n  t[\"\\u2F70\"] = \"\\u793A\";\n  t[\"\\u2F71\"] = \"\\u79B8\";\n  t[\"\\u2F72\"] = \"\\u79BE\";\n  t[\"\\u2F73\"] = \"\\u7A74\";\n  t[\"\\u2F74\"] = \"\\u7ACB\";\n  t[\"\\u2F75\"] = \"\\u7AF9\";\n  t[\"\\u2F76\"] = \"\\u7C73\";\n  t[\"\\u2F77\"] = \"\\u7CF8\";\n  t[\"\\u2F78\"] = \"\\u7F36\";\n  t[\"\\u2F79\"] = \"\\u7F51\";\n  t[\"\\u2F7A\"] = \"\\u7F8A\";\n  t[\"\\u2F7B\"] = \"\\u7FBD\";\n  t[\"\\u2F7C\"] = \"\\u8001\";\n  t[\"\\u2F7D\"] = \"\\u800C\";\n  t[\"\\u2F7E\"] = \"\\u8012\";\n  t[\"\\u2F7F\"] = \"\\u8033\";\n  t[\"\\u2F80\"] = \"\\u807F\";\n  t[\"\\u2F81\"] = \"\\u8089\";\n  t[\"\\u2F82\"] = \"\\u81E3\";\n  t[\"\\u2F83\"] = \"\\u81EA\";\n  t[\"\\u2F84\"] = \"\\u81F3\";\n  t[\"\\u2F85\"] = \"\\u81FC\";\n  t[\"\\u2F86\"] = \"\\u820C\";\n  t[\"\\u2F87\"] = \"\\u821B\";\n  t[\"\\u2F88\"] = \"\\u821F\";\n  t[\"\\u2F89\"] = \"\\u826E\";\n  t[\"\\u2F8A\"] = \"\\u8272\";\n  t[\"\\u2F8B\"] = \"\\u8278\";\n  t[\"\\u2F8C\"] = \"\\u864D\";\n  t[\"\\u2F8D\"] = \"\\u866B\";\n  t[\"\\u2F8E\"] = \"\\u8840\";\n  t[\"\\u2F8F\"] = \"\\u884C\";\n  t[\"\\u2F90\"] = \"\\u8863\";\n  t[\"\\u2F91\"] = \"\\u897E\";\n  t[\"\\u2F92\"] = \"\\u898B\";\n  t[\"\\u2F93\"] = \"\\u89D2\";\n  t[\"\\u2F94\"] = \"\\u8A00\";\n  t[\"\\u2F95\"] = \"\\u8C37\";\n  t[\"\\u2F96\"] = \"\\u8C46\";\n  t[\"\\u2F97\"] = \"\\u8C55\";\n  t[\"\\u2F98\"] = \"\\u8C78\";\n  t[\"\\u2F99\"] = \"\\u8C9D\";\n  t[\"\\u2F9A\"] = \"\\u8D64\";\n  t[\"\\u2F9B\"] = \"\\u8D70\";\n  t[\"\\u2F9C\"] = \"\\u8DB3\";\n  t[\"\\u2F9D\"] = \"\\u8EAB\";\n  t[\"\\u2F9E\"] = \"\\u8ECA\";\n  t[\"\\u2F9F\"] = \"\\u8F9B\";\n  t[\"\\u2FA0\"] = \"\\u8FB0\";\n  t[\"\\u2FA1\"] = \"\\u8FB5\";\n  t[\"\\u2FA2\"] = \"\\u9091\";\n  t[\"\\u2FA3\"] = \"\\u9149\";\n  t[\"\\u2FA4\"] = \"\\u91C6\";\n  t[\"\\u2FA5\"] = \"\\u91CC\";\n  t[\"\\u2FA6\"] = \"\\u91D1\";\n  t[\"\\u2FA7\"] = \"\\u9577\";\n  t[\"\\u2FA8\"] = \"\\u9580\";\n  t[\"\\u2FA9\"] = \"\\u961C\";\n  t[\"\\u2FAA\"] = \"\\u96B6\";\n  t[\"\\u2FAB\"] = \"\\u96B9\";\n  t[\"\\u2FAC\"] = \"\\u96E8\";\n  t[\"\\u2FAD\"] = \"\\u9751\";\n  t[\"\\u2FAE\"] = \"\\u975E\";\n  t[\"\\u2FAF\"] = \"\\u9762\";\n  t[\"\\u2FB0\"] = \"\\u9769\";\n  t[\"\\u2FB1\"] = \"\\u97CB\";\n  t[\"\\u2FB2\"] = \"\\u97ED\";\n  t[\"\\u2FB3\"] = \"\\u97F3\";\n  t[\"\\u2FB4\"] = \"\\u9801\";\n  t[\"\\u2FB5\"] = \"\\u98A8\";\n  t[\"\\u2FB6\"] = \"\\u98DB\";\n  t[\"\\u2FB7\"] = \"\\u98DF\";\n  t[\"\\u2FB8\"] = \"\\u9996\";\n  t[\"\\u2FB9\"] = \"\\u9999\";\n  t[\"\\u2FBA\"] = \"\\u99AC\";\n  t[\"\\u2FBB\"] = \"\\u9AA8\";\n  t[\"\\u2FBC\"] = \"\\u9AD8\";\n  t[\"\\u2FBD\"] = \"\\u9ADF\";\n  t[\"\\u2FBE\"] = \"\\u9B25\";\n  t[\"\\u2FBF\"] = \"\\u9B2F\";\n  t[\"\\u2FC0\"] = \"\\u9B32\";\n  t[\"\\u2FC1\"] = \"\\u9B3C\";\n  t[\"\\u2FC2\"] = \"\\u9B5A\";\n  t[\"\\u2FC3\"] = \"\\u9CE5\";\n  t[\"\\u2FC4\"] = \"\\u9E75\";\n  t[\"\\u2FC5\"] = \"\\u9E7F\";\n  t[\"\\u2FC6\"] = \"\\u9EA5\";\n  t[\"\\u2FC7\"] = \"\\u9EBB\";\n  t[\"\\u2FC8\"] = \"\\u9EC3\";\n  t[\"\\u2FC9\"] = \"\\u9ECD\";\n  t[\"\\u2FCA\"] = \"\\u9ED1\";\n  t[\"\\u2FCB\"] = \"\\u9EF9\";\n  t[\"\\u2FCC\"] = \"\\u9EFD\";\n  t[\"\\u2FCD\"] = \"\\u9F0E\";\n  t[\"\\u2FCE\"] = \"\\u9F13\";\n  t[\"\\u2FCF\"] = \"\\u9F20\";\n  t[\"\\u2FD0\"] = \"\\u9F3B\";\n  t[\"\\u2FD1\"] = \"\\u9F4A\";\n  t[\"\\u2FD2\"] = \"\\u9F52\";\n  t[\"\\u2FD3\"] = \"\\u9F8D\";\n  t[\"\\u2FD4\"] = \"\\u9F9C\";\n  t[\"\\u2FD5\"] = \"\\u9FA0\";\n  t[\"\\u3036\"] = \"\\u3012\";\n  t[\"\\u3038\"] = \"\\u5341\";\n  t[\"\\u3039\"] = \"\\u5344\";\n  t[\"\\u303A\"] = \"\\u5345\";\n  t[\"\\u309B\"] = \"\\u0020\\u3099\";\n  t[\"\\u309C\"] = \"\\u0020\\u309A\";\n  t[\"\\u3131\"] = \"\\u1100\";\n  t[\"\\u3132\"] = \"\\u1101\";\n  t[\"\\u3133\"] = \"\\u11AA\";\n  t[\"\\u3134\"] = \"\\u1102\";\n  t[\"\\u3135\"] = \"\\u11AC\";\n  t[\"\\u3136\"] = \"\\u11AD\";\n  t[\"\\u3137\"] = \"\\u1103\";\n  t[\"\\u3138\"] = \"\\u1104\";\n  t[\"\\u3139\"] = \"\\u1105\";\n  t[\"\\u313A\"] = \"\\u11B0\";\n  t[\"\\u313B\"] = \"\\u11B1\";\n  t[\"\\u313C\"] = \"\\u11B2\";\n  t[\"\\u313D\"] = \"\\u11B3\";\n  t[\"\\u313E\"] = \"\\u11B4\";\n  t[\"\\u313F\"] = \"\\u11B5\";\n  t[\"\\u3140\"] = \"\\u111A\";\n  t[\"\\u3141\"] = \"\\u1106\";\n  t[\"\\u3142\"] = \"\\u1107\";\n  t[\"\\u3143\"] = \"\\u1108\";\n  t[\"\\u3144\"] = \"\\u1121\";\n  t[\"\\u3145\"] = \"\\u1109\";\n  t[\"\\u3146\"] = \"\\u110A\";\n  t[\"\\u3147\"] = \"\\u110B\";\n  t[\"\\u3148\"] = \"\\u110C\";\n  t[\"\\u3149\"] = \"\\u110D\";\n  t[\"\\u314A\"] = \"\\u110E\";\n  t[\"\\u314B\"] = \"\\u110F\";\n  t[\"\\u314C\"] = \"\\u1110\";\n  t[\"\\u314D\"] = \"\\u1111\";\n  t[\"\\u314E\"] = \"\\u1112\";\n  t[\"\\u314F\"] = \"\\u1161\";\n  t[\"\\u3150\"] = \"\\u1162\";\n  t[\"\\u3151\"] = \"\\u1163\";\n  t[\"\\u3152\"] = \"\\u1164\";\n  t[\"\\u3153\"] = \"\\u1165\";\n  t[\"\\u3154\"] = \"\\u1166\";\n  t[\"\\u3155\"] = \"\\u1167\";\n  t[\"\\u3156\"] = \"\\u1168\";\n  t[\"\\u3157\"] = \"\\u1169\";\n  t[\"\\u3158\"] = \"\\u116A\";\n  t[\"\\u3159\"] = \"\\u116B\";\n  t[\"\\u315A\"] = \"\\u116C\";\n  t[\"\\u315B\"] = \"\\u116D\";\n  t[\"\\u315C\"] = \"\\u116E\";\n  t[\"\\u315D\"] = \"\\u116F\";\n  t[\"\\u315E\"] = \"\\u1170\";\n  t[\"\\u315F\"] = \"\\u1171\";\n  t[\"\\u3160\"] = \"\\u1172\";\n  t[\"\\u3161\"] = \"\\u1173\";\n  t[\"\\u3162\"] = \"\\u1174\";\n  t[\"\\u3163\"] = \"\\u1175\";\n  t[\"\\u3164\"] = \"\\u1160\";\n  t[\"\\u3165\"] = \"\\u1114\";\n  t[\"\\u3166\"] = \"\\u1115\";\n  t[\"\\u3167\"] = \"\\u11C7\";\n  t[\"\\u3168\"] = \"\\u11C8\";\n  t[\"\\u3169\"] = \"\\u11CC\";\n  t[\"\\u316A\"] = \"\\u11CE\";\n  t[\"\\u316B\"] = \"\\u11D3\";\n  t[\"\\u316C\"] = \"\\u11D7\";\n  t[\"\\u316D\"] = \"\\u11D9\";\n  t[\"\\u316E\"] = \"\\u111C\";\n  t[\"\\u316F\"] = \"\\u11DD\";\n  t[\"\\u3170\"] = \"\\u11DF\";\n  t[\"\\u3171\"] = \"\\u111D\";\n  t[\"\\u3172\"] = \"\\u111E\";\n  t[\"\\u3173\"] = \"\\u1120\";\n  t[\"\\u3174\"] = \"\\u1122\";\n  t[\"\\u3175\"] = \"\\u1123\";\n  t[\"\\u3176\"] = \"\\u1127\";\n  t[\"\\u3177\"] = \"\\u1129\";\n  t[\"\\u3178\"] = \"\\u112B\";\n  t[\"\\u3179\"] = \"\\u112C\";\n  t[\"\\u317A\"] = \"\\u112D\";\n  t[\"\\u317B\"] = \"\\u112E\";\n  t[\"\\u317C\"] = \"\\u112F\";\n  t[\"\\u317D\"] = \"\\u1132\";\n  t[\"\\u317E\"] = \"\\u1136\";\n  t[\"\\u317F\"] = \"\\u1140\";\n  t[\"\\u3180\"] = \"\\u1147\";\n  t[\"\\u3181\"] = \"\\u114C\";\n  t[\"\\u3182\"] = \"\\u11F1\";\n  t[\"\\u3183\"] = \"\\u11F2\";\n  t[\"\\u3184\"] = \"\\u1157\";\n  t[\"\\u3185\"] = \"\\u1158\";\n  t[\"\\u3186\"] = \"\\u1159\";\n  t[\"\\u3187\"] = \"\\u1184\";\n  t[\"\\u3188\"] = \"\\u1185\";\n  t[\"\\u3189\"] = \"\\u1188\";\n  t[\"\\u318A\"] = \"\\u1191\";\n  t[\"\\u318B\"] = \"\\u1192\";\n  t[\"\\u318C\"] = \"\\u1194\";\n  t[\"\\u318D\"] = \"\\u119E\";\n  t[\"\\u318E\"] = \"\\u11A1\";\n  t[\"\\u3200\"] = \"\\u0028\\u1100\\u0029\";\n  t[\"\\u3201\"] = \"\\u0028\\u1102\\u0029\";\n  t[\"\\u3202\"] = \"\\u0028\\u1103\\u0029\";\n  t[\"\\u3203\"] = \"\\u0028\\u1105\\u0029\";\n  t[\"\\u3204\"] = \"\\u0028\\u1106\\u0029\";\n  t[\"\\u3205\"] = \"\\u0028\\u1107\\u0029\";\n  t[\"\\u3206\"] = \"\\u0028\\u1109\\u0029\";\n  t[\"\\u3207\"] = \"\\u0028\\u110B\\u0029\";\n  t[\"\\u3208\"] = \"\\u0028\\u110C\\u0029\";\n  t[\"\\u3209\"] = \"\\u0028\\u110E\\u0029\";\n  t[\"\\u320A\"] = \"\\u0028\\u110F\\u0029\";\n  t[\"\\u320B\"] = \"\\u0028\\u1110\\u0029\";\n  t[\"\\u320C\"] = \"\\u0028\\u1111\\u0029\";\n  t[\"\\u320D\"] = \"\\u0028\\u1112\\u0029\";\n  t[\"\\u320E\"] = \"\\u0028\\u1100\\u1161\\u0029\";\n  t[\"\\u320F\"] = \"\\u0028\\u1102\\u1161\\u0029\";\n  t[\"\\u3210\"] = \"\\u0028\\u1103\\u1161\\u0029\";\n  t[\"\\u3211\"] = \"\\u0028\\u1105\\u1161\\u0029\";\n  t[\"\\u3212\"] = \"\\u0028\\u1106\\u1161\\u0029\";\n  t[\"\\u3213\"] = \"\\u0028\\u1107\\u1161\\u0029\";\n  t[\"\\u3214\"] = \"\\u0028\\u1109\\u1161\\u0029\";\n  t[\"\\u3215\"] = \"\\u0028\\u110B\\u1161\\u0029\";\n  t[\"\\u3216\"] = \"\\u0028\\u110C\\u1161\\u0029\";\n  t[\"\\u3217\"] = \"\\u0028\\u110E\\u1161\\u0029\";\n  t[\"\\u3218\"] = \"\\u0028\\u110F\\u1161\\u0029\";\n  t[\"\\u3219\"] = \"\\u0028\\u1110\\u1161\\u0029\";\n  t[\"\\u321A\"] = \"\\u0028\\u1111\\u1161\\u0029\";\n  t[\"\\u321B\"] = \"\\u0028\\u1112\\u1161\\u0029\";\n  t[\"\\u321C\"] = \"\\u0028\\u110C\\u116E\\u0029\";\n  t[\"\\u321D\"] = \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\";\n  t[\"\\u321E\"] = \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\";\n  t[\"\\u3220\"] = \"\\u0028\\u4E00\\u0029\";\n  t[\"\\u3221\"] = \"\\u0028\\u4E8C\\u0029\";\n  t[\"\\u3222\"] = \"\\u0028\\u4E09\\u0029\";\n  t[\"\\u3223\"] = \"\\u0028\\u56DB\\u0029\";\n  t[\"\\u3224\"] = \"\\u0028\\u4E94\\u0029\";\n  t[\"\\u3225\"] = \"\\u0028\\u516D\\u0029\";\n  t[\"\\u3226\"] = \"\\u0028\\u4E03\\u0029\";\n  t[\"\\u3227\"] = \"\\u0028\\u516B\\u0029\";\n  t[\"\\u3228\"] = \"\\u0028\\u4E5D\\u0029\";\n  t[\"\\u3229\"] = \"\\u0028\\u5341\\u0029\";\n  t[\"\\u322A\"] = \"\\u0028\\u6708\\u0029\";\n  t[\"\\u322B\"] = \"\\u0028\\u706B\\u0029\";\n  t[\"\\u322C\"] = \"\\u0028\\u6C34\\u0029\";\n  t[\"\\u322D\"] = \"\\u0028\\u6728\\u0029\";\n  t[\"\\u322E\"] = \"\\u0028\\u91D1\\u0029\";\n  t[\"\\u322F\"] = \"\\u0028\\u571F\\u0029\";\n  t[\"\\u3230\"] = \"\\u0028\\u65E5\\u0029\";\n  t[\"\\u3231\"] = \"\\u0028\\u682A\\u0029\";\n  t[\"\\u3232\"] = \"\\u0028\\u6709\\u0029\";\n  t[\"\\u3233\"] = \"\\u0028\\u793E\\u0029\";\n  t[\"\\u3234\"] = \"\\u0028\\u540D\\u0029\";\n  t[\"\\u3235\"] = \"\\u0028\\u7279\\u0029\";\n  t[\"\\u3236\"] = \"\\u0028\\u8CA1\\u0029\";\n  t[\"\\u3237\"] = \"\\u0028\\u795D\\u0029\";\n  t[\"\\u3238\"] = \"\\u0028\\u52B4\\u0029\";\n  t[\"\\u3239\"] = \"\\u0028\\u4EE3\\u0029\";\n  t[\"\\u323A\"] = \"\\u0028\\u547C\\u0029\";\n  t[\"\\u323B\"] = \"\\u0028\\u5B66\\u0029\";\n  t[\"\\u323C\"] = \"\\u0028\\u76E3\\u0029\";\n  t[\"\\u323D\"] = \"\\u0028\\u4F01\\u0029\";\n  t[\"\\u323E\"] = \"\\u0028\\u8CC7\\u0029\";\n  t[\"\\u323F\"] = \"\\u0028\\u5354\\u0029\";\n  t[\"\\u3240\"] = \"\\u0028\\u796D\\u0029\";\n  t[\"\\u3241\"] = \"\\u0028\\u4F11\\u0029\";\n  t[\"\\u3242\"] = \"\\u0028\\u81EA\\u0029\";\n  t[\"\\u3243\"] = \"\\u0028\\u81F3\\u0029\";\n  t[\"\\u32C0\"] = \"\\u0031\\u6708\";\n  t[\"\\u32C1\"] = \"\\u0032\\u6708\";\n  t[\"\\u32C2\"] = \"\\u0033\\u6708\";\n  t[\"\\u32C3\"] = \"\\u0034\\u6708\";\n  t[\"\\u32C4\"] = \"\\u0035\\u6708\";\n  t[\"\\u32C5\"] = \"\\u0036\\u6708\";\n  t[\"\\u32C6\"] = \"\\u0037\\u6708\";\n  t[\"\\u32C7\"] = \"\\u0038\\u6708\";\n  t[\"\\u32C8\"] = \"\\u0039\\u6708\";\n  t[\"\\u32C9\"] = \"\\u0031\\u0030\\u6708\";\n  t[\"\\u32CA\"] = \"\\u0031\\u0031\\u6708\";\n  t[\"\\u32CB\"] = \"\\u0031\\u0032\\u6708\";\n  t[\"\\u3358\"] = \"\\u0030\\u70B9\";\n  t[\"\\u3359\"] = \"\\u0031\\u70B9\";\n  t[\"\\u335A\"] = \"\\u0032\\u70B9\";\n  t[\"\\u335B\"] = \"\\u0033\\u70B9\";\n  t[\"\\u335C\"] = \"\\u0034\\u70B9\";\n  t[\"\\u335D\"] = \"\\u0035\\u70B9\";\n  t[\"\\u335E\"] = \"\\u0036\\u70B9\";\n  t[\"\\u335F\"] = \"\\u0037\\u70B9\";\n  t[\"\\u3360\"] = \"\\u0038\\u70B9\";\n  t[\"\\u3361\"] = \"\\u0039\\u70B9\";\n  t[\"\\u3362\"] = \"\\u0031\\u0030\\u70B9\";\n  t[\"\\u3363\"] = \"\\u0031\\u0031\\u70B9\";\n  t[\"\\u3364\"] = \"\\u0031\\u0032\\u70B9\";\n  t[\"\\u3365\"] = \"\\u0031\\u0033\\u70B9\";\n  t[\"\\u3366\"] = \"\\u0031\\u0034\\u70B9\";\n  t[\"\\u3367\"] = \"\\u0031\\u0035\\u70B9\";\n  t[\"\\u3368\"] = \"\\u0031\\u0036\\u70B9\";\n  t[\"\\u3369\"] = \"\\u0031\\u0037\\u70B9\";\n  t[\"\\u336A\"] = \"\\u0031\\u0038\\u70B9\";\n  t[\"\\u336B\"] = \"\\u0031\\u0039\\u70B9\";\n  t[\"\\u336C\"] = \"\\u0032\\u0030\\u70B9\";\n  t[\"\\u336D\"] = \"\\u0032\\u0031\\u70B9\";\n  t[\"\\u336E\"] = \"\\u0032\\u0032\\u70B9\";\n  t[\"\\u336F\"] = \"\\u0032\\u0033\\u70B9\";\n  t[\"\\u3370\"] = \"\\u0032\\u0034\\u70B9\";\n  t[\"\\u33E0\"] = \"\\u0031\\u65E5\";\n  t[\"\\u33E1\"] = \"\\u0032\\u65E5\";\n  t[\"\\u33E2\"] = \"\\u0033\\u65E5\";\n  t[\"\\u33E3\"] = \"\\u0034\\u65E5\";\n  t[\"\\u33E4\"] = \"\\u0035\\u65E5\";\n  t[\"\\u33E5\"] = \"\\u0036\\u65E5\";\n  t[\"\\u33E6\"] = \"\\u0037\\u65E5\";\n  t[\"\\u33E7\"] = \"\\u0038\\u65E5\";\n  t[\"\\u33E8\"] = \"\\u0039\\u65E5\";\n  t[\"\\u33E9\"] = \"\\u0031\\u0030\\u65E5\";\n  t[\"\\u33EA\"] = \"\\u0031\\u0031\\u65E5\";\n  t[\"\\u33EB\"] = \"\\u0031\\u0032\\u65E5\";\n  t[\"\\u33EC\"] = \"\\u0031\\u0033\\u65E5\";\n  t[\"\\u33ED\"] = \"\\u0031\\u0034\\u65E5\";\n  t[\"\\u33EE\"] = \"\\u0031\\u0035\\u65E5\";\n  t[\"\\u33EF\"] = \"\\u0031\\u0036\\u65E5\";\n  t[\"\\u33F0\"] = \"\\u0031\\u0037\\u65E5\";\n  t[\"\\u33F1\"] = \"\\u0031\\u0038\\u65E5\";\n  t[\"\\u33F2\"] = \"\\u0031\\u0039\\u65E5\";\n  t[\"\\u33F3\"] = \"\\u0032\\u0030\\u65E5\";\n  t[\"\\u33F4\"] = \"\\u0032\\u0031\\u65E5\";\n  t[\"\\u33F5\"] = \"\\u0032\\u0032\\u65E5\";\n  t[\"\\u33F6\"] = \"\\u0032\\u0033\\u65E5\";\n  t[\"\\u33F7\"] = \"\\u0032\\u0034\\u65E5\";\n  t[\"\\u33F8\"] = \"\\u0032\\u0035\\u65E5\";\n  t[\"\\u33F9\"] = \"\\u0032\\u0036\\u65E5\";\n  t[\"\\u33FA\"] = \"\\u0032\\u0037\\u65E5\";\n  t[\"\\u33FB\"] = \"\\u0032\\u0038\\u65E5\";\n  t[\"\\u33FC\"] = \"\\u0032\\u0039\\u65E5\";\n  t[\"\\u33FD\"] = \"\\u0033\\u0030\\u65E5\";\n  t[\"\\u33FE\"] = \"\\u0033\\u0031\\u65E5\";\n  t[\"\\uFB00\"] = \"\\u0066\\u0066\";\n  t[\"\\uFB01\"] = \"\\u0066\\u0069\";\n  t[\"\\uFB02\"] = \"\\u0066\\u006C\";\n  t[\"\\uFB03\"] = \"\\u0066\\u0066\\u0069\";\n  t[\"\\uFB04\"] = \"\\u0066\\u0066\\u006C\";\n  t[\"\\uFB05\"] = \"\\u017F\\u0074\";\n  t[\"\\uFB06\"] = \"\\u0073\\u0074\";\n  t[\"\\uFB13\"] = \"\\u0574\\u0576\";\n  t[\"\\uFB14\"] = \"\\u0574\\u0565\";\n  t[\"\\uFB15\"] = \"\\u0574\\u056B\";\n  t[\"\\uFB16\"] = \"\\u057E\\u0576\";\n  t[\"\\uFB17\"] = \"\\u0574\\u056D\";\n  t[\"\\uFB4F\"] = \"\\u05D0\\u05DC\";\n  t[\"\\uFB50\"] = \"\\u0671\";\n  t[\"\\uFB51\"] = \"\\u0671\";\n  t[\"\\uFB52\"] = \"\\u067B\";\n  t[\"\\uFB53\"] = \"\\u067B\";\n  t[\"\\uFB54\"] = \"\\u067B\";\n  t[\"\\uFB55\"] = \"\\u067B\";\n  t[\"\\uFB56\"] = \"\\u067E\";\n  t[\"\\uFB57\"] = \"\\u067E\";\n  t[\"\\uFB58\"] = \"\\u067E\";\n  t[\"\\uFB59\"] = \"\\u067E\";\n  t[\"\\uFB5A\"] = \"\\u0680\";\n  t[\"\\uFB5B\"] = \"\\u0680\";\n  t[\"\\uFB5C\"] = \"\\u0680\";\n  t[\"\\uFB5D\"] = \"\\u0680\";\n  t[\"\\uFB5E\"] = \"\\u067A\";\n  t[\"\\uFB5F\"] = \"\\u067A\";\n  t[\"\\uFB60\"] = \"\\u067A\";\n  t[\"\\uFB61\"] = \"\\u067A\";\n  t[\"\\uFB62\"] = \"\\u067F\";\n  t[\"\\uFB63\"] = \"\\u067F\";\n  t[\"\\uFB64\"] = \"\\u067F\";\n  t[\"\\uFB65\"] = \"\\u067F\";\n  t[\"\\uFB66\"] = \"\\u0679\";\n  t[\"\\uFB67\"] = \"\\u0679\";\n  t[\"\\uFB68\"] = \"\\u0679\";\n  t[\"\\uFB69\"] = \"\\u0679\";\n  t[\"\\uFB6A\"] = \"\\u06A4\";\n  t[\"\\uFB6B\"] = \"\\u06A4\";\n  t[\"\\uFB6C\"] = \"\\u06A4\";\n  t[\"\\uFB6D\"] = \"\\u06A4\";\n  t[\"\\uFB6E\"] = \"\\u06A6\";\n  t[\"\\uFB6F\"] = \"\\u06A6\";\n  t[\"\\uFB70\"] = \"\\u06A6\";\n  t[\"\\uFB71\"] = \"\\u06A6\";\n  t[\"\\uFB72\"] = \"\\u0684\";\n  t[\"\\uFB73\"] = \"\\u0684\";\n  t[\"\\uFB74\"] = \"\\u0684\";\n  t[\"\\uFB75\"] = \"\\u0684\";\n  t[\"\\uFB76\"] = \"\\u0683\";\n  t[\"\\uFB77\"] = \"\\u0683\";\n  t[\"\\uFB78\"] = \"\\u0683\";\n  t[\"\\uFB79\"] = \"\\u0683\";\n  t[\"\\uFB7A\"] = \"\\u0686\";\n  t[\"\\uFB7B\"] = \"\\u0686\";\n  t[\"\\uFB7C\"] = \"\\u0686\";\n  t[\"\\uFB7D\"] = \"\\u0686\";\n  t[\"\\uFB7E\"] = \"\\u0687\";\n  t[\"\\uFB7F\"] = \"\\u0687\";\n  t[\"\\uFB80\"] = \"\\u0687\";\n  t[\"\\uFB81\"] = \"\\u0687\";\n  t[\"\\uFB82\"] = \"\\u068D\";\n  t[\"\\uFB83\"] = \"\\u068D\";\n  t[\"\\uFB84\"] = \"\\u068C\";\n  t[\"\\uFB85\"] = \"\\u068C\";\n  t[\"\\uFB86\"] = \"\\u068E\";\n  t[\"\\uFB87\"] = \"\\u068E\";\n  t[\"\\uFB88\"] = \"\\u0688\";\n  t[\"\\uFB89\"] = \"\\u0688\";\n  t[\"\\uFB8A\"] = \"\\u0698\";\n  t[\"\\uFB8B\"] = \"\\u0698\";\n  t[\"\\uFB8C\"] = \"\\u0691\";\n  t[\"\\uFB8D\"] = \"\\u0691\";\n  t[\"\\uFB8E\"] = \"\\u06A9\";\n  t[\"\\uFB8F\"] = \"\\u06A9\";\n  t[\"\\uFB90\"] = \"\\u06A9\";\n  t[\"\\uFB91\"] = \"\\u06A9\";\n  t[\"\\uFB92\"] = \"\\u06AF\";\n  t[\"\\uFB93\"] = \"\\u06AF\";\n  t[\"\\uFB94\"] = \"\\u06AF\";\n  t[\"\\uFB95\"] = \"\\u06AF\";\n  t[\"\\uFB96\"] = \"\\u06B3\";\n  t[\"\\uFB97\"] = \"\\u06B3\";\n  t[\"\\uFB98\"] = \"\\u06B3\";\n  t[\"\\uFB99\"] = \"\\u06B3\";\n  t[\"\\uFB9A\"] = \"\\u06B1\";\n  t[\"\\uFB9B\"] = \"\\u06B1\";\n  t[\"\\uFB9C\"] = \"\\u06B1\";\n  t[\"\\uFB9D\"] = \"\\u06B1\";\n  t[\"\\uFB9E\"] = \"\\u06BA\";\n  t[\"\\uFB9F\"] = \"\\u06BA\";\n  t[\"\\uFBA0\"] = \"\\u06BB\";\n  t[\"\\uFBA1\"] = \"\\u06BB\";\n  t[\"\\uFBA2\"] = \"\\u06BB\";\n  t[\"\\uFBA3\"] = \"\\u06BB\";\n  t[\"\\uFBA4\"] = \"\\u06C0\";\n  t[\"\\uFBA5\"] = \"\\u06C0\";\n  t[\"\\uFBA6\"] = \"\\u06C1\";\n  t[\"\\uFBA7\"] = \"\\u06C1\";\n  t[\"\\uFBA8\"] = \"\\u06C1\";\n  t[\"\\uFBA9\"] = \"\\u06C1\";\n  t[\"\\uFBAA\"] = \"\\u06BE\";\n  t[\"\\uFBAB\"] = \"\\u06BE\";\n  t[\"\\uFBAC\"] = \"\\u06BE\";\n  t[\"\\uFBAD\"] = \"\\u06BE\";\n  t[\"\\uFBAE\"] = \"\\u06D2\";\n  t[\"\\uFBAF\"] = \"\\u06D2\";\n  t[\"\\uFBB0\"] = \"\\u06D3\";\n  t[\"\\uFBB1\"] = \"\\u06D3\";\n  t[\"\\uFBD3\"] = \"\\u06AD\";\n  t[\"\\uFBD4\"] = \"\\u06AD\";\n  t[\"\\uFBD5\"] = \"\\u06AD\";\n  t[\"\\uFBD6\"] = \"\\u06AD\";\n  t[\"\\uFBD7\"] = \"\\u06C7\";\n  t[\"\\uFBD8\"] = \"\\u06C7\";\n  t[\"\\uFBD9\"] = \"\\u06C6\";\n  t[\"\\uFBDA\"] = \"\\u06C6\";\n  t[\"\\uFBDB\"] = \"\\u06C8\";\n  t[\"\\uFBDC\"] = \"\\u06C8\";\n  t[\"\\uFBDD\"] = \"\\u0677\";\n  t[\"\\uFBDE\"] = \"\\u06CB\";\n  t[\"\\uFBDF\"] = \"\\u06CB\";\n  t[\"\\uFBE0\"] = \"\\u06C5\";\n  t[\"\\uFBE1\"] = \"\\u06C5\";\n  t[\"\\uFBE2\"] = \"\\u06C9\";\n  t[\"\\uFBE3\"] = \"\\u06C9\";\n  t[\"\\uFBE4\"] = \"\\u06D0\";\n  t[\"\\uFBE5\"] = \"\\u06D0\";\n  t[\"\\uFBE6\"] = \"\\u06D0\";\n  t[\"\\uFBE7\"] = \"\\u06D0\";\n  t[\"\\uFBE8\"] = \"\\u0649\";\n  t[\"\\uFBE9\"] = \"\\u0649\";\n  t[\"\\uFBEA\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEB\"] = \"\\u0626\\u0627\";\n  t[\"\\uFBEC\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBED\"] = \"\\u0626\\u06D5\";\n  t[\"\\uFBEE\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBEF\"] = \"\\u0626\\u0648\";\n  t[\"\\uFBF0\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF1\"] = \"\\u0626\\u06C7\";\n  t[\"\\uFBF2\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF3\"] = \"\\u0626\\u06C6\";\n  t[\"\\uFBF4\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF5\"] = \"\\u0626\\u06C8\";\n  t[\"\\uFBF6\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF7\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF8\"] = \"\\u0626\\u06D0\";\n  t[\"\\uFBF9\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFA\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFB\"] = \"\\u0626\\u0649\";\n  t[\"\\uFBFC\"] = \"\\u06CC\";\n  t[\"\\uFBFD\"] = \"\\u06CC\";\n  t[\"\\uFBFE\"] = \"\\u06CC\";\n  t[\"\\uFBFF\"] = \"\\u06CC\";\n  t[\"\\uFC00\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC01\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC02\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC03\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC04\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC05\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC06\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC07\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC08\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC09\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC0A\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC0B\"] = \"\\u062A\\u062C\";\n  t[\"\\uFC0C\"] = \"\\u062A\\u062D\";\n  t[\"\\uFC0D\"] = \"\\u062A\\u062E\";\n  t[\"\\uFC0E\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC0F\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC10\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC11\"] = \"\\u062B\\u062C\";\n  t[\"\\uFC12\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC13\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC14\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC15\"] = \"\\u062C\\u062D\";\n  t[\"\\uFC16\"] = \"\\u062C\\u0645\";\n  t[\"\\uFC17\"] = \"\\u062D\\u062C\";\n  t[\"\\uFC18\"] = \"\\u062D\\u0645\";\n  t[\"\\uFC19\"] = \"\\u062E\\u062C\";\n  t[\"\\uFC1A\"] = \"\\u062E\\u062D\";\n  t[\"\\uFC1B\"] = \"\\u062E\\u0645\";\n  t[\"\\uFC1C\"] = \"\\u0633\\u062C\";\n  t[\"\\uFC1D\"] = \"\\u0633\\u062D\";\n  t[\"\\uFC1E\"] = \"\\u0633\\u062E\";\n  t[\"\\uFC1F\"] = \"\\u0633\\u0645\";\n  t[\"\\uFC20\"] = \"\\u0635\\u062D\";\n  t[\"\\uFC21\"] = \"\\u0635\\u0645\";\n  t[\"\\uFC22\"] = \"\\u0636\\u062C\";\n  t[\"\\uFC23\"] = \"\\u0636\\u062D\";\n  t[\"\\uFC24\"] = \"\\u0636\\u062E\";\n  t[\"\\uFC25\"] = \"\\u0636\\u0645\";\n  t[\"\\uFC26\"] = \"\\u0637\\u062D\";\n  t[\"\\uFC27\"] = \"\\u0637\\u0645\";\n  t[\"\\uFC28\"] = \"\\u0638\\u0645\";\n  t[\"\\uFC29\"] = \"\\u0639\\u062C\";\n  t[\"\\uFC2A\"] = \"\\u0639\\u0645\";\n  t[\"\\uFC2B\"] = \"\\u063A\\u062C\";\n  t[\"\\uFC2C\"] = \"\\u063A\\u0645\";\n  t[\"\\uFC2D\"] = \"\\u0641\\u062C\";\n  t[\"\\uFC2E\"] = \"\\u0641\\u062D\";\n  t[\"\\uFC2F\"] = \"\\u0641\\u062E\";\n  t[\"\\uFC30\"] = \"\\u0641\\u0645\";\n  t[\"\\uFC31\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC32\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC33\"] = \"\\u0642\\u062D\";\n  t[\"\\uFC34\"] = \"\\u0642\\u0645\";\n  t[\"\\uFC35\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC36\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC37\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC38\"] = \"\\u0643\\u062C\";\n  t[\"\\uFC39\"] = \"\\u0643\\u062D\";\n  t[\"\\uFC3A\"] = \"\\u0643\\u062E\";\n  t[\"\\uFC3B\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC3C\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC3D\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC3E\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC3F\"] = \"\\u0644\\u062C\";\n  t[\"\\uFC40\"] = \"\\u0644\\u062D\";\n  t[\"\\uFC41\"] = \"\\u0644\\u062E\";\n  t[\"\\uFC42\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC43\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC44\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC45\"] = \"\\u0645\\u062C\";\n  t[\"\\uFC46\"] = \"\\u0645\\u062D\";\n  t[\"\\uFC47\"] = \"\\u0645\\u062E\";\n  t[\"\\uFC48\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC49\"] = \"\\u0645\\u0649\";\n  t[\"\\uFC4A\"] = \"\\u0645\\u064A\";\n  t[\"\\uFC4B\"] = \"\\u0646\\u062C\";\n  t[\"\\uFC4C\"] = \"\\u0646\\u062D\";\n  t[\"\\uFC4D\"] = \"\\u0646\\u062E\";\n  t[\"\\uFC4E\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC4F\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC50\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC51\"] = \"\\u0647\\u062C\";\n  t[\"\\uFC52\"] = \"\\u0647\\u0645\";\n  t[\"\\uFC53\"] = \"\\u0647\\u0649\";\n  t[\"\\uFC54\"] = \"\\u0647\\u064A\";\n  t[\"\\uFC55\"] = \"\\u064A\\u062C\";\n  t[\"\\uFC56\"] = \"\\u064A\\u062D\";\n  t[\"\\uFC57\"] = \"\\u064A\\u062E\";\n  t[\"\\uFC58\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC59\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC5A\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC5B\"] = \"\\u0630\\u0670\";\n  t[\"\\uFC5C\"] = \"\\u0631\\u0670\";\n  t[\"\\uFC5D\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC5E\"] = \"\\u0020\\u064C\\u0651\";\n  t[\"\\uFC5F\"] = \"\\u0020\\u064D\\u0651\";\n  t[\"\\uFC60\"] = \"\\u0020\\u064E\\u0651\";\n  t[\"\\uFC61\"] = \"\\u0020\\u064F\\u0651\";\n  t[\"\\uFC62\"] = \"\\u0020\\u0650\\u0651\";\n  t[\"\\uFC63\"] = \"\\u0020\\u0651\\u0670\";\n  t[\"\\uFC64\"] = \"\\u0626\\u0631\";\n  t[\"\\uFC65\"] = \"\\u0626\\u0632\";\n  t[\"\\uFC66\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC67\"] = \"\\u0626\\u0646\";\n  t[\"\\uFC68\"] = \"\\u0626\\u0649\";\n  t[\"\\uFC69\"] = \"\\u0626\\u064A\";\n  t[\"\\uFC6A\"] = \"\\u0628\\u0631\";\n  t[\"\\uFC6B\"] = \"\\u0628\\u0632\";\n  t[\"\\uFC6C\"] = \"\\u0628\\u0645\";\n  t[\"\\uFC6D\"] = \"\\u0628\\u0646\";\n  t[\"\\uFC6E\"] = \"\\u0628\\u0649\";\n  t[\"\\uFC6F\"] = \"\\u0628\\u064A\";\n  t[\"\\uFC70\"] = \"\\u062A\\u0631\";\n  t[\"\\uFC71\"] = \"\\u062A\\u0632\";\n  t[\"\\uFC72\"] = \"\\u062A\\u0645\";\n  t[\"\\uFC73\"] = \"\\u062A\\u0646\";\n  t[\"\\uFC74\"] = \"\\u062A\\u0649\";\n  t[\"\\uFC75\"] = \"\\u062A\\u064A\";\n  t[\"\\uFC76\"] = \"\\u062B\\u0631\";\n  t[\"\\uFC77\"] = \"\\u062B\\u0632\";\n  t[\"\\uFC78\"] = \"\\u062B\\u0645\";\n  t[\"\\uFC79\"] = \"\\u062B\\u0646\";\n  t[\"\\uFC7A\"] = \"\\u062B\\u0649\";\n  t[\"\\uFC7B\"] = \"\\u062B\\u064A\";\n  t[\"\\uFC7C\"] = \"\\u0641\\u0649\";\n  t[\"\\uFC7D\"] = \"\\u0641\\u064A\";\n  t[\"\\uFC7E\"] = \"\\u0642\\u0649\";\n  t[\"\\uFC7F\"] = \"\\u0642\\u064A\";\n  t[\"\\uFC80\"] = \"\\u0643\\u0627\";\n  t[\"\\uFC81\"] = \"\\u0643\\u0644\";\n  t[\"\\uFC82\"] = \"\\u0643\\u0645\";\n  t[\"\\uFC83\"] = \"\\u0643\\u0649\";\n  t[\"\\uFC84\"] = \"\\u0643\\u064A\";\n  t[\"\\uFC85\"] = \"\\u0644\\u0645\";\n  t[\"\\uFC86\"] = \"\\u0644\\u0649\";\n  t[\"\\uFC87\"] = \"\\u0644\\u064A\";\n  t[\"\\uFC88\"] = \"\\u0645\\u0627\";\n  t[\"\\uFC89\"] = \"\\u0645\\u0645\";\n  t[\"\\uFC8A\"] = \"\\u0646\\u0631\";\n  t[\"\\uFC8B\"] = \"\\u0646\\u0632\";\n  t[\"\\uFC8C\"] = \"\\u0646\\u0645\";\n  t[\"\\uFC8D\"] = \"\\u0646\\u0646\";\n  t[\"\\uFC8E\"] = \"\\u0646\\u0649\";\n  t[\"\\uFC8F\"] = \"\\u0646\\u064A\";\n  t[\"\\uFC90\"] = \"\\u0649\\u0670\";\n  t[\"\\uFC91\"] = \"\\u064A\\u0631\";\n  t[\"\\uFC92\"] = \"\\u064A\\u0632\";\n  t[\"\\uFC93\"] = \"\\u064A\\u0645\";\n  t[\"\\uFC94\"] = \"\\u064A\\u0646\";\n  t[\"\\uFC95\"] = \"\\u064A\\u0649\";\n  t[\"\\uFC96\"] = \"\\u064A\\u064A\";\n  t[\"\\uFC97\"] = \"\\u0626\\u062C\";\n  t[\"\\uFC98\"] = \"\\u0626\\u062D\";\n  t[\"\\uFC99\"] = \"\\u0626\\u062E\";\n  t[\"\\uFC9A\"] = \"\\u0626\\u0645\";\n  t[\"\\uFC9B\"] = \"\\u0626\\u0647\";\n  t[\"\\uFC9C\"] = \"\\u0628\\u062C\";\n  t[\"\\uFC9D\"] = \"\\u0628\\u062D\";\n  t[\"\\uFC9E\"] = \"\\u0628\\u062E\";\n  t[\"\\uFC9F\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCA0\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCA1\"] = \"\\u062A\\u062C\";\n  t[\"\\uFCA2\"] = \"\\u062A\\u062D\";\n  t[\"\\uFCA3\"] = \"\\u062A\\u062E\";\n  t[\"\\uFCA4\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCA5\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCA6\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCA7\"] = \"\\u062C\\u062D\";\n  t[\"\\uFCA8\"] = \"\\u062C\\u0645\";\n  t[\"\\uFCA9\"] = \"\\u062D\\u062C\";\n  t[\"\\uFCAA\"] = \"\\u062D\\u0645\";\n  t[\"\\uFCAB\"] = \"\\u062E\\u062C\";\n  t[\"\\uFCAC\"] = \"\\u062E\\u0645\";\n  t[\"\\uFCAD\"] = \"\\u0633\\u062C\";\n  t[\"\\uFCAE\"] = \"\\u0633\\u062D\";\n  t[\"\\uFCAF\"] = \"\\u0633\\u062E\";\n  t[\"\\uFCB0\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCB1\"] = \"\\u0635\\u062D\";\n  t[\"\\uFCB2\"] = \"\\u0635\\u062E\";\n  t[\"\\uFCB3\"] = \"\\u0635\\u0645\";\n  t[\"\\uFCB4\"] = \"\\u0636\\u062C\";\n  t[\"\\uFCB5\"] = \"\\u0636\\u062D\";\n  t[\"\\uFCB6\"] = \"\\u0636\\u062E\";\n  t[\"\\uFCB7\"] = \"\\u0636\\u0645\";\n  t[\"\\uFCB8\"] = \"\\u0637\\u062D\";\n  t[\"\\uFCB9\"] = \"\\u0638\\u0645\";\n  t[\"\\uFCBA\"] = \"\\u0639\\u062C\";\n  t[\"\\uFCBB\"] = \"\\u0639\\u0645\";\n  t[\"\\uFCBC\"] = \"\\u063A\\u062C\";\n  t[\"\\uFCBD\"] = \"\\u063A\\u0645\";\n  t[\"\\uFCBE\"] = \"\\u0641\\u062C\";\n  t[\"\\uFCBF\"] = \"\\u0641\\u062D\";\n  t[\"\\uFCC0\"] = \"\\u0641\\u062E\";\n  t[\"\\uFCC1\"] = \"\\u0641\\u0645\";\n  t[\"\\uFCC2\"] = \"\\u0642\\u062D\";\n  t[\"\\uFCC3\"] = \"\\u0642\\u0645\";\n  t[\"\\uFCC4\"] = \"\\u0643\\u062C\";\n  t[\"\\uFCC5\"] = \"\\u0643\\u062D\";\n  t[\"\\uFCC6\"] = \"\\u0643\\u062E\";\n  t[\"\\uFCC7\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCC8\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCC9\"] = \"\\u0644\\u062C\";\n  t[\"\\uFCCA\"] = \"\\u0644\\u062D\";\n  t[\"\\uFCCB\"] = \"\\u0644\\u062E\";\n  t[\"\\uFCCC\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCCD\"] = \"\\u0644\\u0647\";\n  t[\"\\uFCCE\"] = \"\\u0645\\u062C\";\n  t[\"\\uFCCF\"] = \"\\u0645\\u062D\";\n  t[\"\\uFCD0\"] = \"\\u0645\\u062E\";\n  t[\"\\uFCD1\"] = \"\\u0645\\u0645\";\n  t[\"\\uFCD2\"] = \"\\u0646\\u062C\";\n  t[\"\\uFCD3\"] = \"\\u0646\\u062D\";\n  t[\"\\uFCD4\"] = \"\\u0646\\u062E\";\n  t[\"\\uFCD5\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCD6\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCD7\"] = \"\\u0647\\u062C\";\n  t[\"\\uFCD8\"] = \"\\u0647\\u0645\";\n  t[\"\\uFCD9\"] = \"\\u0647\\u0670\";\n  t[\"\\uFCDA\"] = \"\\u064A\\u062C\";\n  t[\"\\uFCDB\"] = \"\\u064A\\u062D\";\n  t[\"\\uFCDC\"] = \"\\u064A\\u062E\";\n  t[\"\\uFCDD\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCDE\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCDF\"] = \"\\u0626\\u0645\";\n  t[\"\\uFCE0\"] = \"\\u0626\\u0647\";\n  t[\"\\uFCE1\"] = \"\\u0628\\u0645\";\n  t[\"\\uFCE2\"] = \"\\u0628\\u0647\";\n  t[\"\\uFCE3\"] = \"\\u062A\\u0645\";\n  t[\"\\uFCE4\"] = \"\\u062A\\u0647\";\n  t[\"\\uFCE5\"] = \"\\u062B\\u0645\";\n  t[\"\\uFCE6\"] = \"\\u062B\\u0647\";\n  t[\"\\uFCE7\"] = \"\\u0633\\u0645\";\n  t[\"\\uFCE8\"] = \"\\u0633\\u0647\";\n  t[\"\\uFCE9\"] = \"\\u0634\\u0645\";\n  t[\"\\uFCEA\"] = \"\\u0634\\u0647\";\n  t[\"\\uFCEB\"] = \"\\u0643\\u0644\";\n  t[\"\\uFCEC\"] = \"\\u0643\\u0645\";\n  t[\"\\uFCED\"] = \"\\u0644\\u0645\";\n  t[\"\\uFCEE\"] = \"\\u0646\\u0645\";\n  t[\"\\uFCEF\"] = \"\\u0646\\u0647\";\n  t[\"\\uFCF0\"] = \"\\u064A\\u0645\";\n  t[\"\\uFCF1\"] = \"\\u064A\\u0647\";\n  t[\"\\uFCF2\"] = \"\\u0640\\u064E\\u0651\";\n  t[\"\\uFCF3\"] = \"\\u0640\\u064F\\u0651\";\n  t[\"\\uFCF4\"] = \"\\u0640\\u0650\\u0651\";\n  t[\"\\uFCF5\"] = \"\\u0637\\u0649\";\n  t[\"\\uFCF6\"] = \"\\u0637\\u064A\";\n  t[\"\\uFCF7\"] = \"\\u0639\\u0649\";\n  t[\"\\uFCF8\"] = \"\\u0639\\u064A\";\n  t[\"\\uFCF9\"] = \"\\u063A\\u0649\";\n  t[\"\\uFCFA\"] = \"\\u063A\\u064A\";\n  t[\"\\uFCFB\"] = \"\\u0633\\u0649\";\n  t[\"\\uFCFC\"] = \"\\u0633\\u064A\";\n  t[\"\\uFCFD\"] = \"\\u0634\\u0649\";\n  t[\"\\uFCFE\"] = \"\\u0634\\u064A\";\n  t[\"\\uFCFF\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD00\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD01\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD02\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD03\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD04\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD05\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD06\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD07\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD08\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD09\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD0A\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD0B\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD0C\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD0D\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD0E\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD0F\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD10\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD11\"] = \"\\u0637\\u0649\";\n  t[\"\\uFD12\"] = \"\\u0637\\u064A\";\n  t[\"\\uFD13\"] = \"\\u0639\\u0649\";\n  t[\"\\uFD14\"] = \"\\u0639\\u064A\";\n  t[\"\\uFD15\"] = \"\\u063A\\u0649\";\n  t[\"\\uFD16\"] = \"\\u063A\\u064A\";\n  t[\"\\uFD17\"] = \"\\u0633\\u0649\";\n  t[\"\\uFD18\"] = \"\\u0633\\u064A\";\n  t[\"\\uFD19\"] = \"\\u0634\\u0649\";\n  t[\"\\uFD1A\"] = \"\\u0634\\u064A\";\n  t[\"\\uFD1B\"] = \"\\u062D\\u0649\";\n  t[\"\\uFD1C\"] = \"\\u062D\\u064A\";\n  t[\"\\uFD1D\"] = \"\\u062C\\u0649\";\n  t[\"\\uFD1E\"] = \"\\u062C\\u064A\";\n  t[\"\\uFD1F\"] = \"\\u062E\\u0649\";\n  t[\"\\uFD20\"] = \"\\u062E\\u064A\";\n  t[\"\\uFD21\"] = \"\\u0635\\u0649\";\n  t[\"\\uFD22\"] = \"\\u0635\\u064A\";\n  t[\"\\uFD23\"] = \"\\u0636\\u0649\";\n  t[\"\\uFD24\"] = \"\\u0636\\u064A\";\n  t[\"\\uFD25\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD26\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD27\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD28\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD29\"] = \"\\u0634\\u0631\";\n  t[\"\\uFD2A\"] = \"\\u0633\\u0631\";\n  t[\"\\uFD2B\"] = \"\\u0635\\u0631\";\n  t[\"\\uFD2C\"] = \"\\u0636\\u0631\";\n  t[\"\\uFD2D\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD2E\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD2F\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD30\"] = \"\\u0634\\u0645\";\n  t[\"\\uFD31\"] = \"\\u0633\\u0647\";\n  t[\"\\uFD32\"] = \"\\u0634\\u0647\";\n  t[\"\\uFD33\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD34\"] = \"\\u0633\\u062C\";\n  t[\"\\uFD35\"] = \"\\u0633\\u062D\";\n  t[\"\\uFD36\"] = \"\\u0633\\u062E\";\n  t[\"\\uFD37\"] = \"\\u0634\\u062C\";\n  t[\"\\uFD38\"] = \"\\u0634\\u062D\";\n  t[\"\\uFD39\"] = \"\\u0634\\u062E\";\n  t[\"\\uFD3A\"] = \"\\u0637\\u0645\";\n  t[\"\\uFD3B\"] = \"\\u0638\\u0645\";\n  t[\"\\uFD3C\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD3D\"] = \"\\u0627\\u064B\";\n  t[\"\\uFD50\"] = \"\\u062A\\u062C\\u0645\";\n  t[\"\\uFD51\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD52\"] = \"\\u062A\\u062D\\u062C\";\n  t[\"\\uFD53\"] = \"\\u062A\\u062D\\u0645\";\n  t[\"\\uFD54\"] = \"\\u062A\\u062E\\u0645\";\n  t[\"\\uFD55\"] = \"\\u062A\\u0645\\u062C\";\n  t[\"\\uFD56\"] = \"\\u062A\\u0645\\u062D\";\n  t[\"\\uFD57\"] = \"\\u062A\\u0645\\u062E\";\n  t[\"\\uFD58\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD59\"] = \"\\u062C\\u0645\\u062D\";\n  t[\"\\uFD5A\"] = \"\\u062D\\u0645\\u064A\";\n  t[\"\\uFD5B\"] = \"\\u062D\\u0645\\u0649\";\n  t[\"\\uFD5C\"] = \"\\u0633\\u062D\\u062C\";\n  t[\"\\uFD5D\"] = \"\\u0633\\u062C\\u062D\";\n  t[\"\\uFD5E\"] = \"\\u0633\\u062C\\u0649\";\n  t[\"\\uFD5F\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD60\"] = \"\\u0633\\u0645\\u062D\";\n  t[\"\\uFD61\"] = \"\\u0633\\u0645\\u062C\";\n  t[\"\\uFD62\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD63\"] = \"\\u0633\\u0645\\u0645\";\n  t[\"\\uFD64\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD65\"] = \"\\u0635\\u062D\\u062D\";\n  t[\"\\uFD66\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFD67\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD68\"] = \"\\u0634\\u062D\\u0645\";\n  t[\"\\uFD69\"] = \"\\u0634\\u062C\\u064A\";\n  t[\"\\uFD6A\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6B\"] = \"\\u0634\\u0645\\u062E\";\n  t[\"\\uFD6C\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6D\"] = \"\\u0634\\u0645\\u0645\";\n  t[\"\\uFD6E\"] = \"\\u0636\\u062D\\u0649\";\n  t[\"\\uFD6F\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD70\"] = \"\\u0636\\u062E\\u0645\";\n  t[\"\\uFD71\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD72\"] = \"\\u0637\\u0645\\u062D\";\n  t[\"\\uFD73\"] = \"\\u0637\\u0645\\u0645\";\n  t[\"\\uFD74\"] = \"\\u0637\\u0645\\u064A\";\n  t[\"\\uFD75\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFD76\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD77\"] = \"\\u0639\\u0645\\u0645\";\n  t[\"\\uFD78\"] = \"\\u0639\\u0645\\u0649\";\n  t[\"\\uFD79\"] = \"\\u063A\\u0645\\u0645\";\n  t[\"\\uFD7A\"] = \"\\u063A\\u0645\\u064A\";\n  t[\"\\uFD7B\"] = \"\\u063A\\u0645\\u0649\";\n  t[\"\\uFD7C\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7D\"] = \"\\u0641\\u062E\\u0645\";\n  t[\"\\uFD7E\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFD7F\"] = \"\\u0642\\u0645\\u0645\";\n  t[\"\\uFD80\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFD81\"] = \"\\u0644\\u062D\\u064A\";\n  t[\"\\uFD82\"] = \"\\u0644\\u062D\\u0649\";\n  t[\"\\uFD83\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD84\"] = \"\\u0644\\u062C\\u062C\";\n  t[\"\\uFD85\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD86\"] = \"\\u0644\\u062E\\u0645\";\n  t[\"\\uFD87\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD88\"] = \"\\u0644\\u0645\\u062D\";\n  t[\"\\uFD89\"] = \"\\u0645\\u062D\\u062C\";\n  t[\"\\uFD8A\"] = \"\\u0645\\u062D\\u0645\";\n  t[\"\\uFD8B\"] = \"\\u0645\\u062D\\u064A\";\n  t[\"\\uFD8C\"] = \"\\u0645\\u062C\\u062D\";\n  t[\"\\uFD8D\"] = \"\\u0645\\u062C\\u0645\";\n  t[\"\\uFD8E\"] = \"\\u0645\\u062E\\u062C\";\n  t[\"\\uFD8F\"] = \"\\u0645\\u062E\\u0645\";\n  t[\"\\uFD92\"] = \"\\u0645\\u062C\\u062E\";\n  t[\"\\uFD93\"] = \"\\u0647\\u0645\\u062C\";\n  t[\"\\uFD94\"] = \"\\u0647\\u0645\\u0645\";\n  t[\"\\uFD95\"] = \"\\u0646\\u062D\\u0645\";\n  t[\"\\uFD96\"] = \"\\u0646\\u062D\\u0649\";\n  t[\"\\uFD97\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD98\"] = \"\\u0646\\u062C\\u0645\";\n  t[\"\\uFD99\"] = \"\\u0646\\u062C\\u0649\";\n  t[\"\\uFD9A\"] = \"\\u0646\\u0645\\u064A\";\n  t[\"\\uFD9B\"] = \"\\u0646\\u0645\\u0649\";\n  t[\"\\uFD9C\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9D\"] = \"\\u064A\\u0645\\u0645\";\n  t[\"\\uFD9E\"] = \"\\u0628\\u062E\\u064A\";\n  t[\"\\uFD9F\"] = \"\\u062A\\u062C\\u064A\";\n  t[\"\\uFDA0\"] = \"\\u062A\\u062C\\u0649\";\n  t[\"\\uFDA1\"] = \"\\u062A\\u062E\\u064A\";\n  t[\"\\uFDA2\"] = \"\\u062A\\u062E\\u0649\";\n  t[\"\\uFDA3\"] = \"\\u062A\\u0645\\u064A\";\n  t[\"\\uFDA4\"] = \"\\u062A\\u0645\\u0649\";\n  t[\"\\uFDA5\"] = \"\\u062C\\u0645\\u064A\";\n  t[\"\\uFDA6\"] = \"\\u062C\\u062D\\u0649\";\n  t[\"\\uFDA7\"] = \"\\u062C\\u0645\\u0649\";\n  t[\"\\uFDA8\"] = \"\\u0633\\u062E\\u0649\";\n  t[\"\\uFDA9\"] = \"\\u0635\\u062D\\u064A\";\n  t[\"\\uFDAA\"] = \"\\u0634\\u062D\\u064A\";\n  t[\"\\uFDAB\"] = \"\\u0636\\u062D\\u064A\";\n  t[\"\\uFDAC\"] = \"\\u0644\\u062C\\u064A\";\n  t[\"\\uFDAD\"] = \"\\u0644\\u0645\\u064A\";\n  t[\"\\uFDAE\"] = \"\\u064A\\u062D\\u064A\";\n  t[\"\\uFDAF\"] = \"\\u064A\\u062C\\u064A\";\n  t[\"\\uFDB0\"] = \"\\u064A\\u0645\\u064A\";\n  t[\"\\uFDB1\"] = \"\\u0645\\u0645\\u064A\";\n  t[\"\\uFDB2\"] = \"\\u0642\\u0645\\u064A\";\n  t[\"\\uFDB3\"] = \"\\u0646\\u062D\\u064A\";\n  t[\"\\uFDB4\"] = \"\\u0642\\u0645\\u062D\";\n  t[\"\\uFDB5\"] = \"\\u0644\\u062D\\u0645\";\n  t[\"\\uFDB6\"] = \"\\u0639\\u0645\\u064A\";\n  t[\"\\uFDB7\"] = \"\\u0643\\u0645\\u064A\";\n  t[\"\\uFDB8\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDB9\"] = \"\\u0645\\u062E\\u064A\";\n  t[\"\\uFDBA\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBB\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDBC\"] = \"\\u0644\\u062C\\u0645\";\n  t[\"\\uFDBD\"] = \"\\u0646\\u062C\\u062D\";\n  t[\"\\uFDBE\"] = \"\\u062C\\u062D\\u064A\";\n  t[\"\\uFDBF\"] = \"\\u062D\\u062C\\u064A\";\n  t[\"\\uFDC0\"] = \"\\u0645\\u062C\\u064A\";\n  t[\"\\uFDC1\"] = \"\\u0641\\u0645\\u064A\";\n  t[\"\\uFDC2\"] = \"\\u0628\\u062D\\u064A\";\n  t[\"\\uFDC3\"] = \"\\u0643\\u0645\\u0645\";\n  t[\"\\uFDC4\"] = \"\\u0639\\u062C\\u0645\";\n  t[\"\\uFDC5\"] = \"\\u0635\\u0645\\u0645\";\n  t[\"\\uFDC6\"] = \"\\u0633\\u062E\\u064A\";\n  t[\"\\uFDC7\"] = \"\\u0646\\u062C\\u064A\";\n  t[\"\\uFE49\"] = \"\\u203E\";\n  t[\"\\uFE4A\"] = \"\\u203E\";\n  t[\"\\uFE4B\"] = \"\\u203E\";\n  t[\"\\uFE4C\"] = \"\\u203E\";\n  t[\"\\uFE4D\"] = \"\\u005F\";\n  t[\"\\uFE4E\"] = \"\\u005F\";\n  t[\"\\uFE4F\"] = \"\\u005F\";\n  t[\"\\uFE80\"] = \"\\u0621\";\n  t[\"\\uFE81\"] = \"\\u0622\";\n  t[\"\\uFE82\"] = \"\\u0622\";\n  t[\"\\uFE83\"] = \"\\u0623\";\n  t[\"\\uFE84\"] = \"\\u0623\";\n  t[\"\\uFE85\"] = \"\\u0624\";\n  t[\"\\uFE86\"] = \"\\u0624\";\n  t[\"\\uFE87\"] = \"\\u0625\";\n  t[\"\\uFE88\"] = \"\\u0625\";\n  t[\"\\uFE89\"] = \"\\u0626\";\n  t[\"\\uFE8A\"] = \"\\u0626\";\n  t[\"\\uFE8B\"] = \"\\u0626\";\n  t[\"\\uFE8C\"] = \"\\u0626\";\n  t[\"\\uFE8D\"] = \"\\u0627\";\n  t[\"\\uFE8E\"] = \"\\u0627\";\n  t[\"\\uFE8F\"] = \"\\u0628\";\n  t[\"\\uFE90\"] = \"\\u0628\";\n  t[\"\\uFE91\"] = \"\\u0628\";\n  t[\"\\uFE92\"] = \"\\u0628\";\n  t[\"\\uFE93\"] = \"\\u0629\";\n  t[\"\\uFE94\"] = \"\\u0629\";\n  t[\"\\uFE95\"] = \"\\u062A\";\n  t[\"\\uFE96\"] = \"\\u062A\";\n  t[\"\\uFE97\"] = \"\\u062A\";\n  t[\"\\uFE98\"] = \"\\u062A\";\n  t[\"\\uFE99\"] = \"\\u062B\";\n  t[\"\\uFE9A\"] = \"\\u062B\";\n  t[\"\\uFE9B\"] = \"\\u062B\";\n  t[\"\\uFE9C\"] = \"\\u062B\";\n  t[\"\\uFE9D\"] = \"\\u062C\";\n  t[\"\\uFE9E\"] = \"\\u062C\";\n  t[\"\\uFE9F\"] = \"\\u062C\";\n  t[\"\\uFEA0\"] = \"\\u062C\";\n  t[\"\\uFEA1\"] = \"\\u062D\";\n  t[\"\\uFEA2\"] = \"\\u062D\";\n  t[\"\\uFEA3\"] = \"\\u062D\";\n  t[\"\\uFEA4\"] = \"\\u062D\";\n  t[\"\\uFEA5\"] = \"\\u062E\";\n  t[\"\\uFEA6\"] = \"\\u062E\";\n  t[\"\\uFEA7\"] = \"\\u062E\";\n  t[\"\\uFEA8\"] = \"\\u062E\";\n  t[\"\\uFEA9\"] = \"\\u062F\";\n  t[\"\\uFEAA\"] = \"\\u062F\";\n  t[\"\\uFEAB\"] = \"\\u0630\";\n  t[\"\\uFEAC\"] = \"\\u0630\";\n  t[\"\\uFEAD\"] = \"\\u0631\";\n  t[\"\\uFEAE\"] = \"\\u0631\";\n  t[\"\\uFEAF\"] = \"\\u0632\";\n  t[\"\\uFEB0\"] = \"\\u0632\";\n  t[\"\\uFEB1\"] = \"\\u0633\";\n  t[\"\\uFEB2\"] = \"\\u0633\";\n  t[\"\\uFEB3\"] = \"\\u0633\";\n  t[\"\\uFEB4\"] = \"\\u0633\";\n  t[\"\\uFEB5\"] = \"\\u0634\";\n  t[\"\\uFEB6\"] = \"\\u0634\";\n  t[\"\\uFEB7\"] = \"\\u0634\";\n  t[\"\\uFEB8\"] = \"\\u0634\";\n  t[\"\\uFEB9\"] = \"\\u0635\";\n  t[\"\\uFEBA\"] = \"\\u0635\";\n  t[\"\\uFEBB\"] = \"\\u0635\";\n  t[\"\\uFEBC\"] = \"\\u0635\";\n  t[\"\\uFEBD\"] = \"\\u0636\";\n  t[\"\\uFEBE\"] = \"\\u0636\";\n  t[\"\\uFEBF\"] = \"\\u0636\";\n  t[\"\\uFEC0\"] = \"\\u0636\";\n  t[\"\\uFEC1\"] = \"\\u0637\";\n  t[\"\\uFEC2\"] = \"\\u0637\";\n  t[\"\\uFEC3\"] = \"\\u0637\";\n  t[\"\\uFEC4\"] = \"\\u0637\";\n  t[\"\\uFEC5\"] = \"\\u0638\";\n  t[\"\\uFEC6\"] = \"\\u0638\";\n  t[\"\\uFEC7\"] = \"\\u0638\";\n  t[\"\\uFEC8\"] = \"\\u0638\";\n  t[\"\\uFEC9\"] = \"\\u0639\";\n  t[\"\\uFECA\"] = \"\\u0639\";\n  t[\"\\uFECB\"] = \"\\u0639\";\n  t[\"\\uFECC\"] = \"\\u0639\";\n  t[\"\\uFECD\"] = \"\\u063A\";\n  t[\"\\uFECE\"] = \"\\u063A\";\n  t[\"\\uFECF\"] = \"\\u063A\";\n  t[\"\\uFED0\"] = \"\\u063A\";\n  t[\"\\uFED1\"] = \"\\u0641\";\n  t[\"\\uFED2\"] = \"\\u0641\";\n  t[\"\\uFED3\"] = \"\\u0641\";\n  t[\"\\uFED4\"] = \"\\u0641\";\n  t[\"\\uFED5\"] = \"\\u0642\";\n  t[\"\\uFED6\"] = \"\\u0642\";\n  t[\"\\uFED7\"] = \"\\u0642\";\n  t[\"\\uFED8\"] = \"\\u0642\";\n  t[\"\\uFED9\"] = \"\\u0643\";\n  t[\"\\uFEDA\"] = \"\\u0643\";\n  t[\"\\uFEDB\"] = \"\\u0643\";\n  t[\"\\uFEDC\"] = \"\\u0643\";\n  t[\"\\uFEDD\"] = \"\\u0644\";\n  t[\"\\uFEDE\"] = \"\\u0644\";\n  t[\"\\uFEDF\"] = \"\\u0644\";\n  t[\"\\uFEE0\"] = \"\\u0644\";\n  t[\"\\uFEE1\"] = \"\\u0645\";\n  t[\"\\uFEE2\"] = \"\\u0645\";\n  t[\"\\uFEE3\"] = \"\\u0645\";\n  t[\"\\uFEE4\"] = \"\\u0645\";\n  t[\"\\uFEE5\"] = \"\\u0646\";\n  t[\"\\uFEE6\"] = \"\\u0646\";\n  t[\"\\uFEE7\"] = \"\\u0646\";\n  t[\"\\uFEE8\"] = \"\\u0646\";\n  t[\"\\uFEE9\"] = \"\\u0647\";\n  t[\"\\uFEEA\"] = \"\\u0647\";\n  t[\"\\uFEEB\"] = \"\\u0647\";\n  t[\"\\uFEEC\"] = \"\\u0647\";\n  t[\"\\uFEED\"] = \"\\u0648\";\n  t[\"\\uFEEE\"] = \"\\u0648\";\n  t[\"\\uFEEF\"] = \"\\u0649\";\n  t[\"\\uFEF0\"] = \"\\u0649\";\n  t[\"\\uFEF1\"] = \"\\u064A\";\n  t[\"\\uFEF2\"] = \"\\u064A\";\n  t[\"\\uFEF3\"] = \"\\u064A\";\n  t[\"\\uFEF4\"] = \"\\u064A\";\n  t[\"\\uFEF5\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF6\"] = \"\\u0644\\u0622\";\n  t[\"\\uFEF7\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF8\"] = \"\\u0644\\u0623\";\n  t[\"\\uFEF9\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFA\"] = \"\\u0644\\u0625\";\n  t[\"\\uFEFB\"] = \"\\u0644\\u0627\";\n  t[\"\\uFEFC\"] = \"\\u0644\\u0627\";\n});\n\nfunction reverseIfRtl(chars) {\n  var charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  var s = \"\";\n  for (var ii = charsLength - 1; ii >= 0; ii--) {\n    s += chars[ii];\n  }\n  return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\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  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return (\n      (data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]\n    );\n  }\n\n  function getUshort(data, offset) {\n    return (data[offset] << 8) | data[offset + 1];\n  }\n\n  function getSubroutineBias(subrs) {\n    const numSubrs = subrs.length;\n    let bias = 32768;\n    if (numSubrs < 1240) {\n      bias = 107;\n    } else if (numSubrs < 33900) {\n      bias = 1131;\n    }\n    return bias;\n  }\n\n  function parseCmap(data, start, end) {\n    var offset =\n      getUshort(data, start + 2) === 1\n        ? getLong(data, start + 8)\n        : getLong(data, start + 16);\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2); // length\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p) };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4); // length\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p),\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new FormatError(`unsupported cmap: ${format}`);\n  }\n\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new CFFParser(\n      new Stream(data, start, end - start),\n      properties,\n      seacAnalysisEnabled\n    );\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs:\n        cff.topDict.privateDict &&\n        cff.topDict.privateDict.subrsIndex &&\n        cff.topDict.privateDict.subrsIndex.objects,\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n    };\n  }\n\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return (\n          (data[offset] << 24) |\n          (data[offset + 1] << 16) |\n          (data[offset + 2] << 8) |\n          data[offset + 3]\n        );\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return (data[offset] << 9) | (data[offset + 1] << 1);\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0),\n      gid = 0;\n    var l = 0,\n      r = ranges.length - 1;\n    while (l < r) {\n      var c = (l + r + 1) >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid =\n        (ranges[l].idDelta +\n          (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n        0xffff;\n    }\n    return {\n      charCode: code,\n      glyphId: gid,\n    };\n  }\n\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n    }\n\n    var i = 0;\n    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n    var flags;\n    var x = 0,\n      y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      // composite glyph\n      do {\n        flags = (code[i] << 8) | code[i + 1];\n        var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if (flags & 0x01) {\n          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n        if (flags & 0x02) {\n          x = arg1;\n          y = arg2;\n        } else {\n          x = 0;\n          y = 0; // TODO \"they are points\" ?\n        }\n        var scaleX = 1,\n          scaleY = 1,\n          scale01 = 0,\n          scale10 = 0;\n        if (flags & 0x08) {\n          scaleX = scaleY =\n            ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          i += 2;\n        } else if (flags & 0x40) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          i += 4;\n        } else if (flags & 0x80) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: \"save\" });\n          cmds.push({\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: \"restore\" });\n        }\n      } while (flags & 0x20);\n    } else {\n      // simple glyph\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = (code[i] << 8) | code[i + 1];\n      i += 2 + instructionLength; // skipping the instructions\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if (flags & 0x08) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        // contours might have implicit points, which is located in the middle\n        // between two neighboring off-curve points\n        var contour = points.slice(startPoint, endPoint + 1);\n        if (contour[0].flags & 1) {\n          contour.push(contour[0]); // using start point at the contour end\n        } else if (contour[contour.length - 1].flags & 1) {\n          // first is off-curve point, trying to use one from the end\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          // start and end are off-curve points, creating implicit one\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2,\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if (contour[j].flags & 1) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if (contour[j + 1].flags & 1) {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              contour[j + 1].x,\n              contour[j + 1].y\n            );\n            j++;\n          } else {\n            quadraticCurveTo(\n              contour[j].x,\n              contour[j].y,\n              (contour[j].x + contour[j + 1].x) / 2,\n              (contour[j].y + contour[j + 1].y) / 2\n            );\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n\n  function compileCharString(charStringCode, cmds, font, glyphId) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: \"moveTo\", args: [x, y] });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: \"lineTo\", args: [x, y] });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n    }\n\n    var stack = [];\n    var x = 0,\n      y = 0;\n    var stems = 0;\n\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1: // hstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3: // vstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4: // vmoveto\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5: // rlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6: // hlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7: // vlineto\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8: // rrcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10: // callsubr\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              const fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                const fontDict = font.fdArray[fdIndex];\n                let subrs;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  // Add subroutine bias.\n                  n += getSubroutineBias(subrs);\n                  subrCode = subrs[n];\n                }\n              } else {\n                warn(\"Invalid fd index for glyph index.\");\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11: // return\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34: // flex\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35: // flex\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop(); // fd\n                break;\n              case 36: // hflex1\n                xa = x + stack.shift();\n                y1 = y + stack.shift();\n                xb = xa + stack.shift();\n                y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37: // flex1\n                var x0 = x,\n                  y0 = y;\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb;\n                y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new FormatError(`unknown operator: 12 ${v}`);\n            }\n            break;\n          case 14: // endchar\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: \"save\" });\n              cmds.push({ cmd: \"translate\", args: [x, y] });\n              var cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n              cmds.push({ cmd: \"restore\" });\n\n              cmap = lookupCmap(\n                font.cmap,\n                String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n              );\n              compileCharString(\n                font.glyphs[cmap.glyphId],\n                cmds,\n                font,\n                cmap.glyphId\n              );\n            }\n            return;\n          case 18: // hstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19: // hintmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 20: // cntrmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 21: // rmoveto\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22: // hmoveto\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23: // vstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24: // rcurveline\n            while (stack.length > 2) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25: // rlinecurve\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26: // vvcurveto\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27: // hhcurveto\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n            i += 2;\n            break;\n          case 29: // callgsubr\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30: // vhcurveto\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31: // hvcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new FormatError(`unknown operator: ${v}`);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push(\n                ((code[i] << 24) |\n                  (code[i + 1] << 16) |\n                  (code[i + 2] << 8) |\n                  code[i + 3]) /\n                  65536\n              );\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(charStringCode);\n  }\n\n  const NOOP = [];\n\n  class CompiledFont {\n    constructor(fontMatrix) {\n      if (this.constructor === CompiledFont) {\n        unreachable(\"Cannot initialize CompiledFont.\");\n      }\n      this.fontMatrix = fontMatrix;\n\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    getPathJs(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      let fn = this.compiledGlyphs[cmap.glyphId];\n      if (!fn) {\n        fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n        this.compiledGlyphs[cmap.glyphId] = fn;\n      }\n      if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n        this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n      }\n      return fn;\n    }\n\n    compileGlyph(code, glyphId) {\n      if (!code || code.length === 0 || code[0] === 14) {\n        return NOOP;\n      }\n\n      let fontMatrix = this.fontMatrix;\n      if (this.isCFFCIDFont) {\n        // Top DICT's FontMatrix can be ignored because CFFCompiler always\n        // removes it and copies to FDArray DICTs.\n        const fdIndex = this.fdSelect.getFDIndex(glyphId);\n        if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n          const fontDict = this.fdArray[fdIndex];\n          fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n        } else {\n          warn(\"Invalid fd index for glyph index.\");\n        }\n      }\n\n      const cmds = [];\n      cmds.push({ cmd: \"save\" });\n      cmds.push({ cmd: \"transform\", args: fontMatrix.slice() });\n      cmds.push({ cmd: \"scale\", args: [\"size\", \"-size\"] });\n\n      this.compileGlyphImpl(code, cmds, glyphId);\n\n      cmds.push({ cmd: \"restore\" });\n\n      return cmds;\n    }\n\n    compileGlyphImpl() {\n      unreachable(\"Children classes should implement this.\");\n    }\n\n    hasBuiltPath(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      return (\n        this.compiledGlyphs[cmap.glyphId] !== undefined &&\n        this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined\n      );\n    }\n  }\n\n  class TrueTypeCompiled extends CompiledFont {\n    constructor(glyphs, cmap, fontMatrix) {\n      super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n      this.glyphs = glyphs;\n      this.cmap = cmap;\n    }\n\n    compileGlyphImpl(code, cmds) {\n      compileGlyf(code, cmds, this);\n    }\n  }\n\n  class Type2Compiled extends CompiledFont {\n    constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n      this.glyphs = cffInfo.glyphs;\n      this.gsubrs = cffInfo.gsubrs || [];\n      this.subrs = cffInfo.subrs || [];\n      this.cmap = cmap;\n      this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n      this.gsubrsBias = getSubroutineBias(this.gsubrs);\n      this.subrsBias = getSubroutineBias(this.subrs);\n\n      this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      this.fdSelect = cffInfo.fdSelect;\n      this.fdArray = cffInfo.fdArray;\n    }\n\n    compileGlyphImpl(code, cmds, glyphId) {\n      compileCharString(code, cmds, this, glyphId);\n    }\n  }\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = bytesToString(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case \"cmap\":\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case \"glyf\":\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case \"loca\":\n            loca = data.subarray(offset, offset + length);\n            break;\n          case \"head\":\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case \"CFF \":\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n\n      if (glyf) {\n        var fontMatrix = !unitsPerEm\n          ? font.fontMatrix\n          : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n        return new TrueTypeCompiled(\n          parseGlyfTable(glyf, loca, indexToLocFormat),\n          cmap,\n          fontMatrix\n        );\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    },\n  };\n})();\n\nexport { FontRendererFactory };\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 { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  // eslint-disable-next-line no-shadow\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(\n      encoded,\n      subrs,\n      seacAnalysisEnabled\n    ) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                const asb = this.stack[this.stack.length - 5];\n                this.seac = this.stack.splice(-4, 4);\n                this.seac[0] += this.lsb - asb;\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n\n    executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    },\n  };\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0,\n      c1 = 52845,\n      c2 = 22719;\n    var count = data.length,\n      maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  // eslint-disable-next-line no-shadow\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(\n        (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n        isHexDigit(data[1]) &&\n        isHexDigit(data[2]) &&\n        isHexDigit(data[3]) &&\n        isHexDigit(data[4]) &&\n        isHexDigit(data[5]) &&\n        isHexDigit(data[6]) &&\n        isHexDigit(data[7])\n      );\n      stream = new Stream(\n        isBinary\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n      );\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n    this.stream = stream;\n    this.nextChar();\n  }\n\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n\n    readInt: function Type1Parser_readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    },\n\n    nextChar: function Type1_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n\n    getToken: function Type1Parser_getToken() {\n      // Eat whitespace and comments.\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    },\n\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram: function Type1Parser_extractFontProgram(properties) {\n      var stream = this.stream;\n\n      var subrs = [],\n        charstrings = [];\n      var privateData = Object.create(null);\n      privateData.lenIV = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            var blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        var output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    },\n\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                var index = this.readInt();\n                this.getToken(); // read in '/'\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            var fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    },\n  };\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\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  FormatError,\n  info,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n  // Constructor should define this.getPattern\n  // eslint-disable-next-line no-shadow\n  function Pattern() {\n    unreachable(\"should not call Pattern constructor\");\n  }\n\n  Pattern.prototype = {\n    // Input: current Canvas context\n    // Output: the appropriate fillStyle or strokeStyle\n    getPattern: function Pattern_getPattern(ctx) {\n      unreachable(`Should not call Pattern.getStyle: ${ctx}`);\n    },\n  };\n\n  Pattern.parseShading = function (\n    shading,\n    matrix,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    var dict = isStream(shading) ? shading.dict : shading;\n    var type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          // Both radial and axial shadings are handled by RadialAxial shading.\n          return new Shadings.RadialAxial(\n            dict,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(\n            shading,\n            matrix,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n  function RadialAxial(\n    dict,\n    matrix,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    this.matrix = matrix;\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.cs = cs;\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    var t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      var domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    var extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      var extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    var fnObj = dict.getRaw(\"Function\");\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    var colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    var color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    var rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    var background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = \"axial\";\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = \"radial\";\n      } else {\n        unreachable(`getPattern type unknown: ${shadingType}`);\n      }\n\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = Util.applyTransform(p0, matrix);\n        p1 = Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n\n      return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n    },\n  };\n\n  return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return (\n            ((this.stream.getByte() << 24) |\n              (this.stream.getByte() << 16) |\n              (this.stream.getByte() << 8) |\n              this.stream.getByte()) >>>\n            0\n          );\n        }\n        buffer =\n          (buffer << 24) |\n          (this.stream.getByte() << 16) |\n          (this.stream.getByte() << 8) |\n          this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & ((1 << bufferLength) - 1);\n        return (\n          ((buffer << (8 - bufferLength)) |\n            ((nextByte & 0xff) >> bufferLength)) >>>\n          0\n        );\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = (buffer << 8) | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & ((1 << bufferLength) - 1);\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale =\n        bitsPerCoordinate < 32\n          ? 1 / ((1 << bitsPerCoordinate) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      return [\n        xi * scale * (decode[1] - decode[0]) + decode[0],\n        yi * scale * (decode[3] - decode[2]) + decode[2],\n      ];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale =\n        bitsPerComponent < 32\n          ? 1 / ((1 << bitsPerComponent) - 1)\n          : 2.3283064365386963e-10; // 2 ^ -32\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    },\n  };\n\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = []; // not maintaining cs since that will match ps\n    var verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    mesh.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n  var getB = (function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count,\n          t_ = 1 - t;\n        lut.push(\n          new Float32Array([\n            t_ * t_ * t_,\n            3 * t * t_ * t_,\n            3 * t * t * t_,\n            t * t * t,\n          ])\n        );\n      }\n      return lut;\n    }\n    var cache = [];\n\n    // eslint-disable-next-line no-shadow\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  })();\n\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    var coords = mesh.coords,\n      colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n\n    var figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    var figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    var splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * TRIANGLE_DENSITY) /\n        (mesh.bounds[2] - mesh.bounds[0])\n    );\n    splitXBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    var splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * TRIANGLE_DENSITY) /\n        (mesh.bounds[3] - mesh.bounds[1])\n    );\n    splitYBy = Math.max(\n      MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    var c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    var bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        var x = 0,\n          y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    mesh.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  function decodeType6Shading(mesh, reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0],\n      minY = mesh.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0],\n        y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n\n  function packData(mesh) {\n    var i, ii, j, jj;\n\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  function Mesh(\n    stream,\n    matrix,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    if (!isStream(stream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get(\"ShadingType\");\n    this.type = \"Pattern\";\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.cs = cs;\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    var fnObj = dict.getRaw(\"Function\");\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    var decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // dirty bounds calculation for determining, how dense shall be triangles\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    // calculate bounds\n    updateBounds(this);\n\n    packData(this);\n  }\n\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return [\n        \"Mesh\",\n        this.shadingType,\n        this.coords,\n        this.colors,\n        this.figures,\n        this.bounds,\n        this.matrix,\n        this.bbox,\n        this.background,\n      ];\n    },\n  };\n\n  return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n  function Dummy() {\n    this.type = \"Pattern\";\n  }\n\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return [\"Dummy\"];\n    },\n  };\n  return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    args,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { Pattern, getTilingPatternIR };\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 { Dict, isDict, isStream, Ref } from \"./primitives.js\";\nimport {\n  FormatError,\n  info,\n  isBool,\n  IsEvalSupportedCached,\n  unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n    this._localFunctionCache = null; // Initialized lazily.\n  }\n\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fn, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fnObj, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  getCached(cacheKey) {\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      if (!this._localFunctionCache) {\n        this._localFunctionCache = new LocalFunctionCache();\n      }\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error(\n        'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n      );\n    }\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      if (!this._localFunctionCache) {\n        this._localFunctionCache = new LocalFunctionCache();\n      }\n      this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n    }\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nvar PDFFunction = (function PDFFunctionClosure() {\n  const CONSTRUCT_SAMPLED = 0;\n  const CONSTRUCT_INTERPOLATED = 2;\n  const CONSTRUCT_STICHED = 3;\n  const CONSTRUCT_POSTSCRIPT = 4;\n\n  return {\n    getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      // 32 is a valid bps so shifting won't work\n      var sampleMul = 1.0 / (2.0 ** bps - 1);\n\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n\n    getIR({ xref, isEvalSupported, fn }) {\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n\n      var types = [\n        this.constructSampled,\n        null,\n        this.constructInterpolated,\n        this.constructStiched,\n        this.constructPostScript,\n      ];\n\n      var typeNum = dict.get(\"FunctionType\");\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new FormatError(\"Unknown type of function\");\n      }\n\n      return typeFn.call(this, { xref, isEvalSupported, fn, dict });\n    },\n\n    fromIR({ xref, isEvalSupported, IR }) {\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({ xref, isEvalSupported, IR });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({\n            xref,\n            isEvalSupported,\n            IR,\n          });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({ xref, isEvalSupported, IR });\n        // case CONSTRUCT_POSTSCRIPT:\n        default:\n          return this.constructPostScriptFromIR({ xref, isEvalSupported, IR });\n      }\n    },\n\n    parse({ xref, isEvalSupported, fn }) {\n      const IR = this.getIR({ xref, isEvalSupported, fn });\n      return this.fromIR({ xref, isEvalSupported, IR });\n    },\n\n    parseArray({ xref, isEvalSupported, fnObj }) {\n      if (!Array.isArray(fnObj)) {\n        // not an array -- parsing as regular function\n        return this.parse({ xref, isEvalSupported, fn: fnObj });\n      }\n\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n        );\n      }\n      return function (src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n\n    constructSampled({ xref, isEvalSupported, fn, dict }) {\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain || !range) {\n        throw new FormatError(\"No domain or range\");\n      }\n\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n\n      var size = toNumberArray(dict.getArray(\"Size\"));\n      var bps = dict.get(\"BitsPerSample\");\n      var order = dict.get(\"Order\") || 1;\n      if (order !== 1) {\n        // No description how cubic spline interpolation works in PDF32000:2008\n        // As in poppler, ignoring order, linear interpolation may work as good\n        info(\"No support for cubic spline interpolation: \" + order);\n      }\n\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n\n      var decode = toNumberArray(dict.getArray(\"Decode\"));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n\n      return [\n        CONSTRUCT_SAMPLED,\n        inputSize,\n        domain,\n        encode,\n        decode,\n        samples,\n        size,\n        outputSize,\n        2 ** bps - 1,\n        range,\n      ];\n    },\n\n    constructSampledFromIR({ xref, isEvalSupported, IR }) {\n      // See chapter 3, page 109 of the PDF reference\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n      }\n\n      return function constructSampledFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        // See chapter 3, page 110 of the PDF reference.\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        // var mask = IR[8];\n        var range = IR[9];\n\n        // Building the cube vertices: its part and sample index\n        // http://rjwagner49.com/Mathematics/Interpolation.pdf\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n\n        var k = n,\n          pos = 1;\n        // Map x_i to y_j for 0 <= i < m using the sampled function.\n        for (i = 0; i < m; ++i) {\n          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(\n            Math.max(src[srcOffset + i], domain_2i),\n            domain_2i_1\n          );\n\n          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n          //                   Encode_2i, Encode_2i+1)\n          var e = interpolate(\n            xi,\n            domain_2i,\n            domain_2i_1,\n            encode[i][0],\n            encode[i][1]\n          );\n\n          // e_i' = min(max(e_i, 0), Size_i - 1)\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n\n          // Adjusting the cube: N and vertex sample index\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n          var n1 = e - e0; // (e - e0) / (e1 - e0);\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k; // e1 * k\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n\n          k *= size_i;\n          pos <<= 1;\n        }\n\n        for (j = 0; j < n; ++j) {\n          // Sum all cube vertices' samples portions\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n\n          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n          //                    Decode_2j, Decode_2j+1)\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n          // y_j = min(max(r_j, range_2j), range_2j+1)\n          dest[destOffset + j] = Math.min(\n            Math.max(rj, range[j][0]),\n            range[j][1]\n          );\n        }\n      };\n    },\n\n    constructInterpolated({ xref, isEvalSupported, fn, dict }) {\n      var c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n      var c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n      var n = dict.get(\"N\");\n\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n\n    constructInterpolatedFromIR({ xref, isEvalSupported, IR }) {\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n\n      var length = diff.length;\n\n      return function constructInterpolatedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + x * diff[j];\n        }\n      };\n    },\n\n    constructStiched({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain\");\n      }\n\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new FormatError(\"Bad domain for stiched function\");\n      }\n\n      var fnRefs = dict.get(\"Functions\");\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(\n          this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n        );\n      }\n\n      var bounds = toNumberArray(dict.getArray(\"Bounds\"));\n      var encode = toNumberArray(dict.getArray(\"Encode\"));\n\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n\n    constructStichedFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n\n      return function constructStichedFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n\n        // clip to domain\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        // calculate which bound the value is in\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n\n        // encode value into domain of function\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n\n        // Prevent the value from becoming NaN as a result\n        // of division by zero (fixes issue6113.pdf).\n        tmpBuf[0] =\n          dmin === dmax\n            ? rmin\n            : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n        // call the appropriate function\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n\n    constructPostScript({ xref, isEvalSupported, fn, dict }) {\n      var domain = toNumberArray(dict.getArray(\"Domain\"));\n      var range = toNumberArray(dict.getArray(\"Range\"));\n\n      if (!domain) {\n        throw new FormatError(\"No domain.\");\n      }\n\n      if (!range) {\n        throw new FormatError(\"No range.\");\n      }\n\n      var lexer = new PostScriptLexer(fn);\n      var parser = new PostScriptParser(lexer);\n      var code = parser.parse();\n\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n\n    constructPostScriptFromIR({ xref, isEvalSupported, IR }) {\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        const compiled = new PostScriptCompiler().compile(code, domain, range);\n        if (compiled) {\n          // Compiled function consists of simple expressions such as addition,\n          // subtraction, Math.max, and also contains 'var' and 'return'\n          // statements. See the generation in the PostScriptCompiler below.\n          // eslint-disable-next-line no-new-func\n          return new Function(\n            \"src\",\n            \"srcOffset\",\n            \"dest\",\n            \"destOffset\",\n            compiled\n          );\n        }\n      }\n      info(\"Unable to compile PS function\");\n\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      // Cache the values for a big speed up, the cache size is limited though\n      // since the number of possible values can be huge from a PS function.\n      var cache = Object.create(null);\n      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n      // seen in our tests.\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n\n      return function constructPostScriptFromIRResult(\n        src,\n        srcOffset,\n        dest,\n        destOffset\n      ) {\n        var i, value;\n        var key = \"\";\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + \"_\";\n        }\n\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    },\n  };\n})();\n\nfunction isPDFFunction(v) {\n  var fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error(\"PostScript function stack underflow.\");\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error(\"PostScript function stack overflow.\");\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    // rotate the last n stack elements p times\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1,\n        c = l + (p - Math.floor(p / n) * n),\n        i,\n        j,\n        t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n    },\n  };\n  return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n  // eslint-disable-next-line no-shadow\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === \"number\") {\n          // Operator is really an operand and should be pushed to the stack.\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          // non standard ps operators\n          case \"jz\": // jump if false\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case \"j\": // jump\n            a = stack.pop();\n            counter = a;\n            break;\n\n          // all ps operators in alphabetical order (excluding if/ifelse)\n          case \"abs\":\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case \"add\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case \"and\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case \"atan\":\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case \"bitshift\":\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case \"ceiling\":\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case \"copy\":\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case \"cos\":\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case \"cvi\":\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case \"cvr\":\n            // noop\n            break;\n          case \"div\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case \"dup\":\n            stack.copy(1);\n            break;\n          case \"eq\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case \"exch\":\n            stack.roll(2, 1);\n            break;\n          case \"exp\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a ** b);\n            break;\n          case \"false\":\n            stack.push(false);\n            break;\n          case \"floor\":\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case \"ge\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case \"gt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case \"idiv\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push((a / b) | 0);\n            break;\n          case \"index\":\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case \"le\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case \"ln\":\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case \"log\":\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case \"lt\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case \"mod\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case \"mul\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case \"ne\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case \"neg\":\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case \"not\":\n            a = stack.pop();\n            if (isBool(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case \"or\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case \"pop\":\n            stack.pop();\n            break;\n          case \"roll\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case \"round\":\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case \"sin\":\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case \"sqrt\":\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case \"sub\":\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case \"true\":\n            stack.push(true);\n            break;\n          case \"truncate\":\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case \"xor\":\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown operator ${operator}`);\n        }\n      }\n      return stack.stack;\n    },\n  };\n  return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function (visitor) {\n    unreachable(\"abstract method\");\n  };\n\n  function AstArgument(index, min, max) {\n    AstNode.call(this, \"args\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function (visitor) {\n    visitor.visitArgument(this);\n  };\n\n  function AstLiteral(number) {\n    AstNode.call(this, \"literal\");\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function (visitor) {\n    visitor.visitLiteral(this);\n  };\n\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, \"binary\");\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function (visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n\n  function AstMin(arg, max) {\n    AstNode.call(this, \"max\");\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function (visitor) {\n    visitor.visitMin(this);\n  };\n\n  function AstVariable(index, min, max) {\n    AstNode.call(this, \"var\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function (visitor) {\n    visitor.visitVariable(this);\n  };\n\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, \"definition\");\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function (visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    },\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    },\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    },\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    },\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    },\n    toString() {\n      return this.parts.join(\"\");\n    },\n  };\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    var min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    var max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  // eslint-disable-next-line no-shadow\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var instructions = [];\n      var inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      var result = [];\n      instructions.forEach(function (instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function (expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2],\n          max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      });\n      return result.join(\"\\n\");\n    },\n  };\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptEvaluator,\n  PostScriptCompiler,\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/* eslint no-var: error */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nconst PostScriptToken = (function PostScriptTokenClosure() {\n  const opCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class PostScriptToken {\n    constructor(type, value) {\n      this.type = type;\n      this.value = value;\n    }\n\n    static getOperator(op) {\n      const opValue = opCache[op];\n      if (opValue) {\n        return opValue;\n      }\n      return (opCache[op] = new PostScriptToken(\n        PostScriptTokenTypes.OPERATOR,\n        op\n      ));\n    }\n\n    static get LBRACE() {\n      return shadow(\n        this,\n        \"LBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n      );\n    }\n\n    static get RBRACE() {\n      return shadow(\n        this,\n        \"RBRACE\",\n        new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n      );\n    }\n\n    static get IF() {\n      return shadow(\n        this,\n        \"IF\",\n        new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n      );\n    }\n\n    static get IFELSE() {\n      return shadow(\n        this,\n        \"IFELSE\",\n        new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n      );\n    }\n  }\n  return PostScriptToken;\n})();\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\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 { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nvar baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nvar arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    var charCode = str.charCodeAt(i);\n    var charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  var e = isOdd(startLevel) ? \"R\" : \"L\";\n  var sor = e;\n  var eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      var end = findUnequal(types, i + 1, \"ON\");\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\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 { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  // eslint-disable-next-line no-shadow\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\n\nexport { getMetrics };\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/* eslint no-var: error */\n\nimport { isArrayBuffer, isString } from \"../shared/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 (isString(input)) {\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;\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    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\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\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n  // Clamp the value to the range\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n  return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  var length = w2 * h2;\n  let dest;\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n  var xRatio = w1 / w2;\n  var yRatio = h1 / h2;\n  var i,\n    j,\n    py,\n    newIndex = 0,\n    oldIndex;\n  var xScaled = new Uint16Array(w2);\n  var w1Scanline = w1;\n\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n  return dest;\n}\n\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    this.image = image;\n    var dict = image.dict;\n\n    const filter = dict.get(\"Filter\");\n    if (isName(filter)) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          var jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"Width\", \"W\");\n    let height = dict.get(\"Height\", \"H\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"Interpolate\", \"I\") || false;\n    this.imageMask = dict.get(\"ImageMask\", \"IM\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BitsPerComponent\", \"BPC\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"ColorSpace\") || dict.getRaw(\"CS\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} ` +\n                \"color components not supported.\"\n            );\n        }\n      }\n      this.colorSpace = ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"Decode\", \"D\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        var maskDict = mask.dict,\n          imageMask = maskDict.get(\"ImageMask\", \"IM\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (isStream(mask) || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported mask format.\");\n      }\n    }\n\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n  }\n\n  static createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    var computedLength = ((width + 7) >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height };\n  }\n\n  get drawWidth() {\n    return Math.max(\n      this.width,\n      (this.smask && this.smask.width) || 0,\n      (this.mask && this.mask.width) || 0\n    );\n  }\n\n  get drawHeight() {\n    return Math.max(\n      this.height,\n      (this.smask && this.smask.height) || 0,\n      (this.mask && this.mask.height) || 0\n    );\n  }\n\n  decodeBuffer(buffer) {\n    var bpc = this.bpc;\n    var numComps = this.numComps;\n\n    var decodeAddends = this.decodeAddends;\n    var decodeCoefficients = this.decodeCoefficients;\n    var max = (1 << bpc) - 1;\n    var i, ii;\n\n    if (bpc === 1) {\n      // If the buffer needed decode that means it just needs to be inverted.\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n      return;\n    }\n    var index = 0;\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (var j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(\n          buffer[index],\n          decodeAddends[j],\n          decodeCoefficients[j],\n          max\n        );\n        index++;\n      }\n    }\n  }\n\n  getComponents(buffer) {\n    var bpc = this.bpc;\n\n    // This image doesn't require any extra work.\n    if (bpc === 8) {\n      return buffer;\n    }\n\n    var width = this.width;\n    var height = this.height;\n    var numComps = this.numComps;\n\n    var length = width * height * numComps;\n    var bufferPos = 0;\n    let output;\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n    var rowComps = width * numComps;\n\n    var max = (1 << bpc) - 1;\n    var i = 0,\n      ii,\n      buf;\n\n    if (bpc === 1) {\n      // Optimization for reading 1 bpc images.\n      var mask, loop1End, loop2End;\n      for (var j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n\n        // unroll loop for all full bytes\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = (buf >> 7) & 1;\n          output[i + 1] = (buf >> 6) & 1;\n          output[i + 2] = (buf >> 5) & 1;\n          output[i + 3] = (buf >> 4) & 1;\n          output[i + 4] = (buf >> 3) & 1;\n          output[i + 5] = (buf >> 2) & 1;\n          output[i + 6] = (buf >> 1) & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n\n        // handle remaining bits\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      // The general case that handles all other bpc values.\n      var bits = 0;\n      buf = 0;\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n\n        while (bits < bpc) {\n          buf = (buf << 8) | buffer[bufferPos++];\n          bits += 8;\n        }\n\n        var remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n        output[i] = value;\n        buf = buf & ((1 << remainingBits) - 1);\n        bits = remainingBits;\n      }\n    }\n    return output;\n  }\n\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        rgbaBuf instanceof Uint8ClampedArray,\n        'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n      );\n    }\n    var smask = this.smask;\n    var mask = this.mask;\n    var alphaBuf, sw, sh, i, ii, j;\n\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      smask.fillGrayBuffer(alphaBuf);\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        mask.fillGrayBuffer(alphaBuf);\n\n        // Need to invert values in rgbaBuf\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        // Color key mask: if any of the components are outside the range\n        // then they should be painted.\n        alphaBuf = new Uint8ClampedArray(width * height);\n        var numComps = this.numComps;\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          var opacity = 0;\n          var imageOffset = i * numComps;\n          for (j = 0; j < numComps; ++j) {\n            var color = image[imageOffset + j];\n            var maskOffset = j * 2;\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new FormatError(\"Unknown mask format.\");\n      }\n    }\n\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      // No mask.\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n\n  undoPreblend(buffer, width, height) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n      );\n    }\n    var matte = this.smask && this.smask.matte;\n    if (!matte) {\n      return;\n    }\n    var matteRgb = this.colorSpace.getRgb(matte, 0);\n    var matteR = matteRgb[0];\n    var matteG = matteRgb[1];\n    var matteB = matteRgb[2];\n    var length = width * height * 4;\n    for (var i = 0; i < length; i += 4) {\n      var alpha = buffer[i + 3];\n      if (alpha === 0) {\n        // according formula we have to get Infinity in all components\n        // making it white (typical paper color) should be okay\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n      var k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n\n  createImageData(forceRGBA = false) {\n    var drawWidth = this.drawWidth;\n    var drawHeight = this.drawHeight;\n    var imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      kind: 0,\n      data: null,\n      // Other fields are filled in below.\n    };\n\n    var numComps = this.numComps;\n    var originalWidth = this.width;\n    var originalHeight = this.height;\n    var bpc = this.bpc;\n\n    // Rows start at byte boundary.\n    var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n    var imgArray;\n\n    if (!forceRGBA) {\n      // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n      // without any complications, we pass a same-sized copy to the main\n      // thread rather than expanding by 32x to RGBA form. This saves *lots*\n      // of memory for many scanned documents. It's also much faster.\n      //\n      // Similarly, if it is a 24-bit-per pixel RGB image without any\n      // complications, we avoid expanding by 1.333x to RGBA form.\n      var kind;\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = ImageKind.GRAYSCALE_1BPP;\n      } else if (\n        this.colorSpace.name === \"DeviceRGB\" &&\n        bpc === 8 &&\n        !this.needsDecode\n      ) {\n        kind = ImageKind.RGB_24BPP;\n      }\n      if (\n        kind &&\n        !this.smask &&\n        !this.mask &&\n        drawWidth === originalWidth &&\n        drawHeight === originalHeight\n      ) {\n        imgData.kind = kind;\n\n        imgArray = this.getImageBytes(originalHeight * rowBytes);\n        // If imgArray came from a DecodeStream, we're safe to transfer it\n        // (and thus detach its underlying buffer) because it will constitute\n        // the entire DecodeStream's data.  But if it came from a Stream, we\n        // need to copy it because it'll only be a portion of the Stream's\n        // data, and the rest will be read later on.\n        if (this.image instanceof DecodeStream) {\n          imgData.data = imgArray;\n        } else {\n          var newArray = new Uint8ClampedArray(imgArray.length);\n          newArray.set(imgArray);\n          imgData.data = newArray;\n        }\n        if (this.needsDecode) {\n          // Invert the buffer (which must be grayscale if we reached here).\n          assert(\n            kind === ImageKind.GRAYSCALE_1BPP,\n            \"PDFImage.createImageData: The image must be grayscale.\"\n          );\n          var buffer = imgData.data;\n          for (var i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n        return imgData;\n      }\n      if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n        let imageLength = originalHeight * rowBytes;\n        switch (this.colorSpace.name) {\n          case \"DeviceGray\":\n            // Avoid truncating the image, since `JpegImage.getData`\n            // will expand the image data when `forceRGB === true`.\n            imageLength *= 3;\n          /* falls through */\n          case \"DeviceRGB\":\n          case \"DeviceCMYK\":\n            imgData.kind = ImageKind.RGB_24BPP;\n            imgData.data = this.getImageBytes(\n              imageLength,\n              drawWidth,\n              drawHeight,\n              /* forceRGB = */ true\n            );\n            return imgData;\n        }\n      }\n    }\n\n    imgArray = this.getImageBytes(originalHeight * rowBytes);\n    // imgArray can be incomplete (e.g. after CCITT fax encoding).\n    var actualHeight =\n      0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n    var comps = this.getComponents(imgArray);\n\n    // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n    // more compact RGB_24BPP form if allowable.\n    var alpha01, maybeUndoPreblend;\n    if (!forceRGBA && !this.smask && !this.mask) {\n      imgData.kind = ImageKind.RGB_24BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n      alpha01 = 0;\n      maybeUndoPreblend = false;\n    } else {\n      imgData.kind = ImageKind.RGBA_32BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n\n      // Color key masking (opacity) must be performed before decoding.\n      this.fillOpacity(\n        imgData.data,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        comps\n      );\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    this.colorSpace.fillRgb(\n      imgData.data,\n      originalWidth,\n      originalHeight,\n      drawWidth,\n      drawHeight,\n      actualHeight,\n      bpc,\n      comps,\n      alpha01\n    );\n    if (maybeUndoPreblend) {\n      this.undoPreblend(imgData.data, drawWidth, actualHeight);\n    }\n\n    return imgData;\n  }\n\n  fillGrayBuffer(buffer) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n      );\n    }\n    var numComps = this.numComps;\n    if (numComps !== 1) {\n      throw new FormatError(\n        `Reading gray scale from a color image: ${numComps}`\n      );\n    }\n\n    var width = this.width;\n    var height = this.height;\n    var bpc = this.bpc;\n\n    // rows start at byte boundary\n    var rowBytes = (width * numComps * bpc + 7) >> 3;\n    var imgArray = this.getImageBytes(height * rowBytes);\n\n    var comps = this.getComponents(imgArray);\n    var i, length;\n\n    if (bpc === 1) {\n      // inline decoding (= inversion) for 1 bpc images\n      length = width * height;\n      if (this.needsDecode) {\n        // invert and scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = (comps[i] - 1) & 255;\n        }\n      } else {\n        // scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n      return;\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    length = width * height;\n    // we aren't using a colorspace so we need to scale the value\n    var scale = 255 / ((1 << bpc) - 1);\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n\n  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGB = !!forceRGB;\n    return this.image.getBytes(length, /* forceClamped = */ true);\n  }\n}\n\nexport { PDFImage };\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/* eslint no-var: error, prefer-const: error */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  UnexpectedResponseException,\n  UnknownErrorException,\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    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      reason instanceof Error ||\n        (typeof reason === \"object\" && reason !== null),\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  } else {\n    if (typeof reason !== \"object\" || reason === null) {\n      return reason;\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 \"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.postMessageTransfers = true;\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        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 (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\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._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 = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this._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    const sourceName = this.sourceName;\n    const targetName = this.targetName;\n    const comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          this._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 = createPromiseCapability();\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 = createPromiseCapability();\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  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const self = this;\n    const action = this.actionHandler[data.action];\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\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 = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        self._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: createPromiseCapability(),\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    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  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId;\n    const sourceName = this.sourceName;\n    const targetName = data.sourceName;\n    const comObj = this.comObj;\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].startCall.resolve();\n        } else {\n          this.streamControllers[streamId].startCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].pullCall.resolve();\n        } else {\n          this.streamControllers[streamId].pullCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!this.streamSinks[streamId]) {\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,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (\n          this.streamSinks[streamId].desiredSize <= 0 &&\n          data.desiredSize > 0\n        ) {\n          this.streamSinks[streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[streamId].desiredSize = data.desiredSize;\n        const { onPull } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onPull && 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(\n          this.streamControllers[streamId],\n          \"enqueue should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(\n          this.streamControllers[streamId],\n          \"close should have stream controller\"\n        );\n        if (this.streamControllers[streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[streamId].isClosed = true;\n        this.streamControllers[streamId].controller.close();\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(\n          this.streamControllers[streamId],\n          \"error should have stream controller\"\n        );\n        this.streamControllers[streamId].controller.error(\n          wrapReason(data.reason)\n        );\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          this.streamControllers[streamId].cancelCall.resolve();\n        } else {\n          this.streamControllers[streamId].cancelCall.reject(\n            wrapReason(data.reason)\n          );\n        }\n        this._deleteStreamController(streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!this.streamSinks[streamId]) {\n          break;\n        }\n        const { onCancel } = this.streamSinks[data.streamId];\n        new Promise(function (resolve) {\n          resolve(onCancel && 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        this.streamSinks[streamId].sinkCapability.reject(\n          wrapReason(data.reason)\n        );\n        this.streamSinks[streamId].isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(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      [\n        this.streamControllers[streamId].startCall,\n        this.streamControllers[streamId].pullCall,\n        this.streamControllers[streamId].cancelCall,\n      ].map(function (capability) {\n        return capability && capability.promise;\n      })\n    );\n    delete this.streamControllers[streamId];\n  }\n\n  /**\n   * Sends raw message to the comObj.\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   * @private\n   */\n  _postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 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/* eslint no-var: error */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFWorkerStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    const readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function (reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n"],"sourceRoot":""}