UNPKG

4.28 MBSource Map (JSON)View Raw
1{"version":3,"file":"pdf.worker.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.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/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.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/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.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/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.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/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_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/flate_stream.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/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.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/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.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/image_utils.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/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/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 ","/* 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, Dict, 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 let 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 // Ensure that `TypedArray`s can be sent to the worker,\n // and that `postMessage` transfers are supported.\n handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\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 let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const 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.\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n typeof ReadableStream === \"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. `ReadableStream`); \" +\n \"please use a `legacy`-build instead.\"\n );\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\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 const 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 // 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\", [recoveryMode]);\n // Check that the last page can be sucessfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const 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 const 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 enableXfa,\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 let loaded = 0;\n const flushChunks = function () {\n const 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 handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const 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 const 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 const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\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(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\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(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\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(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\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\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\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\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (isString(key) && isString(value)) {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const 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 cacheKey: data.cacheKey,\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 casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const 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 includeMarkedContent: data.includeMarkedContent,\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(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\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 for (const task of WorkerTasks) {\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 const 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 { WorkerMessageHandler, WorkerTask };\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 \"./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/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\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 AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst 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 TYPE1STANDARD: \"TYPE1STANDARD\",\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 /** @deprecated unused */\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 signatures: \"signatures\",\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 errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\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 * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\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 if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: 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, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nconst NullCharactersRegExp = /\\x00+/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\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 if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\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 hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // 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) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns '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 // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n 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 \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\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 for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\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\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\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\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\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 { 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: Firefox<65, Chrome<71, Safari<12.1, Node.js<12.0.0\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 // 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 // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\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 *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\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.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: 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 if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n // Slightly reduce the size of the Chromium-extension, given\n // that `ReadableStream` has been supported since Chrome 43.\n return;\n }\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream =\n require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\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","/* 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, shadow, unreachable } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\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 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 if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\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 if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\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._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\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 && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n 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(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n 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 } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\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 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\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n 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 static get(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 static _clearCache() {\n refCache = Object.create(null);\n }\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(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._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 forEach(callback) {\n for (const ref of this._set.values()) {\n callback(ref);\n }\n }\n\n clear() {\n this._set.clear();\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 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 v instanceof BaseStream;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRef,\n isRefsEqual,\n isStream,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length, forceClamped = false) {\n unreachable(\"Abstract method `getBytes` called\");\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 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 getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\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 { createValidAbsoluteUrl, unreachable, warn } 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\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\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 return this._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 loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\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(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\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(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\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\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\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 get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\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.numChunks) {\n return;\n }\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 beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\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 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 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 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 makeSubStream(start, length, dict = null) {\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 Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\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 getBaseStreams() {\n return [this];\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 return 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 }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\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).catch(capability.reject);\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.isDataLoaded) {\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\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, isRef, isStream, RefSet } from \"./primitives.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\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\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.\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 let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\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 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]); // eslint-disable-line unicorn/no-array-push-push\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\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (isRef(entry)) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\") && entry.has(\"JS\")) {\n const js = entry.get(\"JS\");\n let code;\n if (isStream(js)) {\n code = js.getString();\n } else {\n code = js;\n }\n code = stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"&lt;\",\n /* > */ 0x3e: \"&gt;\",\n /* & */ 0x26: \"&amp;\",\n /* \" */ 0x22: \"&quot;\",\n /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\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 // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\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(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\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 { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\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 get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\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 const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n let 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\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 reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\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 InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isBool,\n isNum,\n isString,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n clearPrimitiveCaches,\n Dict,\n isDict,\n isName,\n isRef,\n isStream,\n Name,\n Ref,\n} from \"./primitives.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\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.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\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 static getPageObjId() {\n return `page${ref.toString()}`;\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.getArray(\"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 if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\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 %= 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 /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\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 standardFontDataCache: this.standardFontDataCache,\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 (!annotation.mustBePrinted(annotationStorage)) {\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 cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\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 standardFontDataCache: this.standardFontDataCache,\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(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\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 (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\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 (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\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 includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\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 standardFontDataCache: this.standardFontDataCache,\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 includeMarkedContent,\n combineTextItems,\n sink,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\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 /* collectFields */ false\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 get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\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]\\.\\d$/;\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 = new Map();\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 static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` 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 let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\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 xfaData() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (isStream(xfa) && !xfa.isEmpty) {\n try {\n entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n return entries;\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!isStream(data) || data.isEmpty) {\n continue;\n }\n try {\n entries[name] = stringToUTF8String(data.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return entries;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (!isStream(stream)) {\n continue;\n }\n xfaImages.set(key, stream.getBytes());\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\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 formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (isStream(xfa) && !xfa.isEmpty);\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 sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\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 Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\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 fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _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 try {\n const obj = await this.xref.fetchAsync(ref);\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 to a valid Page dictionary.\"\n );\n } catch (reason) {\n info(reason);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = 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 standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (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.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\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.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await pdfManager.ensureCatalog(\"getAllPageDicts\", [\n recoveryMode,\n ]);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\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 /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = calculationOrder.filter(isRef).map(ref => ref.toString());\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\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 { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\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.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst 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\nconst 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 getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\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 const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const 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\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 const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\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 (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 const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const 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\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\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\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 ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\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\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\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\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\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.\nconst 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 let 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 const nameLen = name.length;\n let 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\nconst 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 (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const 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 let 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.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nexport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\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 AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n isString,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRef,\n isStream,\n Name,\n RefSet,\n} from \"./primitives.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.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 * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex = -1\n ) {\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 collectFields,\n pageIndex,\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 case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\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 (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!isDict(annotDict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!isRef(pageRef)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\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 (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\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. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\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.setTitle(dict.get(\"T\"));\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 this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\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 backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (isRef(kid)) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\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.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 );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\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.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\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 = this._parseStringHelper(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 this.color = getRgbColor(color);\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\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], /* forceStyle = */ true);\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, appearance) {\n return 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, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\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, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\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 Annotation\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 const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\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 //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\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 * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\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\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\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.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = 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.titleObj = this._title;\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 if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\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 _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\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 if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n const fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance = isString(defaultAppearance)\n ? defaultAppearance\n : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = isName(fieldType) ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\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 data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\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, intent, 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 && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\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 intent,\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._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.id,\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.mergedResources,\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 (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\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 const { xref } = evaluator;\n\n const dict = 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 xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = 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\", isAscii(value) ? value : stringToUTF16BEString(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\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\", appearance, \"\\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(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\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 storageEntry = annotationStorage.get(this.data.id);\n let value = storageEntry && storageEntry.value;\n if (value === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\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 if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight,\n lineCount\n );\n\n const font = await this._getFontData(evaluator, task);\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 alignment = this.data.textAlignment;\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 // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\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(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\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 font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _computeFontSize(height, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithOneDigit = x => Math.round(x * 10) / 10;\n\n // Represent the percentage of the font size over the height\n // of a single-line field.\n const FONT_FACTOR = 0.8;\n if (lineCount === -1) {\n fontSize = roundWithOneDigit(FONT_FACTOR * height);\n } else {\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 10.\n // Then we'll adjust font size to what we have really.\n fontSize = 10;\n let lineHeight = fontSize / FONT_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n lineHeight = height / numberOfLines;\n fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, 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 /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\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, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) 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 // TODO: need to handle chars which are not in the font.\n line = font.encodeString(line).join(\"\");\n\n const glyphs = font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\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 getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue,\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\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 this.data.isTooltipOnly = false;\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.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\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 // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\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 xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\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(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\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 xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\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(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\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 // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\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)) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (isName(fieldParentValue)) {\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 = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\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 getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\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 parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\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.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\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 const lineCoordinates = parameters.dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\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 if (!Array.isArray(rawVertices)) {\n return;\n }\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 if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\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 this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.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 = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obsure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\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 = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\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 = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\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 getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\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 \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\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 \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\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 \"I\":\n case \"Indexed\":\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.3333333333333333 - 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 ** 3;\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 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-disable no-var */\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 { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.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 useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\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 standardFontDataCache,\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.standardFontDataCache = standardFontDataCache;\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 = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const 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 // 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 const 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 // 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 const 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\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n processed.forEach(ref => {\n nonBlendModesSet.put(ref);\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 let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\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 fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let 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 // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\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 !== undefined) {\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 const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && isNum(w)) || !(h && isNum(h))) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn(\"Image exceeded maximum allowed size and was removed.\");\n return;\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n const interpolate = dict.get(\"I\", \"Interpolate\");\n let 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 const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(\n bitStrideLength * h,\n /* forceClamped = */ true\n );\n const decode = dict.getArray(\"D\", \"Decode\");\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\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\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const 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\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\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 if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\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 byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const 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 const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let 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 color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\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 const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\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 if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(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 handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\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 evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\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(\n font,\n glyphs,\n this.handler,\n this.options\n );\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 const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let 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(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\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 const 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 if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\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.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = isRef(fontRef);\n let 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 const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const 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 cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible 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) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `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 font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, 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 this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\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 warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\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 evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const 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 const 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 parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = isStream(pattern) ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const 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 localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !isName(operator)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (isRef(raw)) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\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 expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\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 for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\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: null,\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 fallbackFontDict = 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 const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let 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\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\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 let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\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 (!isValidName) {\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 fallbackFontDict\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 const 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 localTilingPatternCache,\n localShadingPatternCache\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 localTilingPatternCache,\n localShadingPatternCache\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 const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\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 (!isValidName) {\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 = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\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 includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\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 const WhitespaceRegexp = /\\s/g;\n const DiacriticRegExp = new RegExp(\"^\\\\p{Mn}$\", \"u\");\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const 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 || font.isCharBBox) &&\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 return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\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 const ii = str.length;\n let i = 0,\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 const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n const str = normalizeWhitespace\n ? replaceWhitespace(bidiResult.str)\n : bidiResult.str;\n return {\n str,\n dir: bidiResult.dir,\n width: textChunk.totalWidth,\n height: textChunk.totalHeight,\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function compareWithLastPosition() {\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return;\n }\n\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return;\n }\n\n let rotate = 0;\n // Take into account the rotation is the current transform.\n // Only rotations with an angle of 0, 90, 180 or 270 are considered.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate += currentTransform[1] > 0 ? 90 : 270;\n }\n\n if (rotate !== 0) {\n switch (rotate) {\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n }\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n if (advanceY < textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return;\n }\n\n flushTextContentItem();\n return;\n }\n\n if (Math.abs(advanceX) > textContentItem.height) {\n appendEOL();\n return;\n }\n if (advanceY <= textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform)) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: advanceY,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n if (advanceX < textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return;\n }\n flushTextContentItem();\n return;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return;\n }\n\n if (advanceX <= textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform)) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: advanceX,\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n let glyphUnicode = glyph.unicode;\n if (\n glyphUnicode === \" \" &&\n (i === 0 ||\n i + 1 === ii ||\n glyphs[i - 1].unicode === \" \" ||\n glyphs[i + 1].unicode === \" \" ||\n extraSpacing)\n ) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n continue;\n }\n\n compareWithLastPosition();\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (DiacriticRegExp.test(glyph.unicode)) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n textChunk.str.push(glyphUnicode);\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf) {\n if (\n textContentItem.spaceInFlowMin <= width &&\n width <= textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width,\n height,\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\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\n const operation = {};\n let stop,\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 const fn = operation.fn;\n args = operation.args;\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 textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\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 textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\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 updateAdvanceScale();\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 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\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\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 const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\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 const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\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 includeMarkedContent,\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 isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\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 case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: isName(args[0]) ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (isDict(args[1])) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: isName(args[0]) ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\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 const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const 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 const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\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 const differences = [];\n let baseEncodingName = null;\n let 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 const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const 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);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const 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 || properties.isInternalFont) {\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 {Array}\n * @private\n */\n _simpleFontToUnicode(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._simpleFontToUnicode(\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 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 async 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._simpleFontToUnicode(properties);\n }\n return 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 new ToUnicodeMap(this._simpleFontToUnicode(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, ordering } = properties.cidSystemInfo;\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 const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.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 // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\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 const 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 // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const 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 const 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 const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const 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 const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let 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 const 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 let 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 const 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 const 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 const baseFontName = dict.get(\"BaseFont\");\n if (isName(baseFontName)) {\n const 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 let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const 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 const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const 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 const 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 const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let 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 const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\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 const 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 if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!isName(type)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const 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 const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const 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 hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (isStream(toUnicode)) {\n const stream = toUnicode.str || toUnicode;\n const 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 const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (isNum(entry) || isRef(entry)) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (isNum(entry) || isRef(entry)) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (isNum(element) || isRef(element)) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\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 let 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 const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const 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 loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\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, file, 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 let fontName = descriptor.get(\"FontName\");\n let 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 (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const 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 let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (isName(cidEncoding)) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\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, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\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._evaluatorOptions.fontExtraProperties),\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 PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\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 const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\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(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const 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 const 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 const 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 const 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 const 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 carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const 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 = new 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 let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let 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 const 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 { EvaluatorPreprocessor, 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 { EOF, isCmd, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst 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 const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\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 getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\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 (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 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\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let 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 let c = 0;\n for (let 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 let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(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 readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const 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\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const 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 let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const 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 const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\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 (let 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 (let 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 (let 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 (let 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 (let 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 (let 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 throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let 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 let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || isString(obj)) {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\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 let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (!isString(obj)) {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (!isString(obj)) {\n break;\n }\n const 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 const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (isName(obj) && isString(obj.name)) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\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 cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\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 const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let 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 async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (isName(encoding)) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (isStream(encoding)) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\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 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 isName,\n Name,\n Ref,\n} from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_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, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside 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, \">>\") && this.buf1 !== EOF) {\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 (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\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\") && this.buf1 !== EOF) {\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 (this.buf1 === EOF) {\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(\"F\", \"Filter\");\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 switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\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 && length.toString()}\" 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 const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\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(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (isName(filter)) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\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 const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\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 case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\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 case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, 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.getObj` 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 // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\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\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let 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 const bufferLength = this.bufferLength;\n let buffer, 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 const 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 let 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\nexport { Ascii85Stream };\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 { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\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.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\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 get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const 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\n getBytes(length, forceClamped = false) {\n const pos = this.pos;\n let end;\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 const 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\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\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 \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let 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\nexport { AsciiHexStream };\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 \"./decode_stream.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\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\n readBlock() {\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\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\nimport { FormatError, info } from \"../shared/util.js\";\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\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst 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\nconst 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\nconst 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\nconst 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\nconst 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\nconst 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 */\nclass CCITTFaxDecoder {\n constructor(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 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(codingLine[this.codingPos] + code1, blackPixels);\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 (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\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\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/* 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 { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst 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\nconst 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\nconst 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\nconst fixedLitCodeTab = [\n 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 ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n 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 ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const 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\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let 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 getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let 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 const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const 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 generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let 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 const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let 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 readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let 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 let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let 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 let 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 let litCodeTable;\n let 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 const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const 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 let 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 let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let 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 let 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 const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\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 \"./decode_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 */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get 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\n ensureBuffer(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 readBlock() {\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\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}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const 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\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const 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\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const 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\nconst 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\nconst 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\nconst 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.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const 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\nfunction 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 const useskip = !!skip;\n const 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 const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let 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 const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const 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 const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const 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 const 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\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const 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 const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let 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 (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const 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\nfunction 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 const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const 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 const 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 const 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 let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const 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 const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const 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 const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let 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 (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction 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 const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let 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 const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const 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 const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let 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 const 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 const 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\nfunction 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 {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\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\nfunction 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 \"${combinationOperator}\" 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 {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\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]; // 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\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const 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 const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let 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 const referredTo = [];\n let 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 const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const 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 let 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\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const 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 (let 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\nfunction 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}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const 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 const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const 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 const 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 const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const 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 const 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 const 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 const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction 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\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const 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 (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let 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\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const 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\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n 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 let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let 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 const 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\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let 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 const 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 const decodingContext = new DecodingContext(data, start, end);\n const 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\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\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\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\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\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\nclass HuffmanLine {\n constructor(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\nclass HuffmanTreeNode {\n constructor(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 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\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\nclass HuffmanTable {\n constructor(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 decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\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\nfunction 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(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\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\nconst standardTablesCache = {};\n\nfunction 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\nclass Reader {\n constructor(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 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nclass Jbig2Image {\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\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\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 \"./decode_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 */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, 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 super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get 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\n ensureBuffer(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 readBlock() {\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(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"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\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}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\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\n// prettier-ignore\nconst 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\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let 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\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const 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 const 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 let 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 let 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 const 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 const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const 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 const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const 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 let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const 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 const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let 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] = 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 const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const 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 const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let 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 let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const 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.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let 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 (let 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\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let 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 const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let 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\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\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 const 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 const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const 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 let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const 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 let 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 const 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 const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const 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 const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const 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 const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const 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 const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const 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 (!nextFileMarker || 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 (let i = 0, ii = frame.components.length; i < ii; i++) {\n const 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 const 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 const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const 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 transform = new Int32Array([-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(data) {\n let Y, Cb, Cr;\n for (let 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(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let 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(data) {\n let Y, Cb, Cr;\n for (let 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(data) {\n let c, m, y, k;\n let offset = 0;\n for (let 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.0003189131175883281 * 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 const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const 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\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 \"./decode_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 */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get 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\n ensureBuffer(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 readBlock() {\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\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, unreachable, 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}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const 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 const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const 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 const dataLength = lbox - headerSize;\n let 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 const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const 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 const 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\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const 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\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let 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 const 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 const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const 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 const 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 const 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 const qcc = {};\n j = position + 2;\n let 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 const 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 const cod = {};\n j = position + 2;\n const 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 const 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 const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const 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 warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\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 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\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 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\nfunction 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}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let 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 const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const 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}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const 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}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const 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 const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let 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 const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const 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 let 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}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const 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}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let 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 const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const 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}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let 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 const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const 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}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let 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 const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const 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 const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const 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}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let 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 const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const 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 const 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}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let 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 const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const 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 const 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}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const 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}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const 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 let 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 const bscale = 1 << (decompositionLevelsCount - r + 1);\n const 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 const 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}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const 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 let 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 const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const 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 const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const 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 for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\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 const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const 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 const 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}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let 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 const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const 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 let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let 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 const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const 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 const 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}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let 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 const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const 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 const 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}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const 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 let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const 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 const component0 = tile.components[0];\n const 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 (let c = 0; c < componentsCount; c++) {\n const 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}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const 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\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const 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\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const 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\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const 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\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const 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\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const 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\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const 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\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const 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 const 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 const 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 const 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 class BitModel {\n constructor(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 const 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 const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n 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\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let 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\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const 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\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let 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 const 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\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let 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 let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const 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\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const 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 let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const 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 (let 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 const contextLabel = labels[neighborsSignificance[index]];\n const 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\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const 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\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let 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\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let 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 const bufferPadding = 4;\n const 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(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\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 let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let 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 const 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 { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const 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\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let 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\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 { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const 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 (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const 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 readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const 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\nexport { LZWStream };\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 \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!isDict(params)) {\n return str; // no prediction\n }\n const 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 const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const 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 return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let 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 let 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 const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const 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 const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let 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 readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let 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 const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let 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\nexport { PredictorStream };\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 \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n 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 const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let 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 const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\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 warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.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 getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.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\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\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 \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\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 const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\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 const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\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 matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\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\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\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\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const 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 */\nfunction 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\nfunction 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\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let 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 (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\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 */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let 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 const 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\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const 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 const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let 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\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let 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 let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let 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 let 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 const 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 const 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 const 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 let format31012 = \"\";\n let 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 let 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\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const 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 const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const 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\nfunction 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 let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let 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 const 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 const bbox = properties.bbox || [0, 0, 0, 0];\n const 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 const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let 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 const winAscent = override.yMax || typoAscent;\n const 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\nfunction createPostTable(properties) {\n const 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 ? 1 : 0) + // 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\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const 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] || createPostscriptName(name), // 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 const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const 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 const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let 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 let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const 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/**\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 */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let 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.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let 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(properties);\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 let data;\n try {\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 const 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(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\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 get renderer() {\n const 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(properties) {\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 const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || 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 // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\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 const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const 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 applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n 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 const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const 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: ttf.getString(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 = ttc.getString(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 const fontNameParts = fontName.split(\"+\");\n let fallbackData;\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 =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\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 let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let 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 (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let 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\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\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 const format = file.getUint16();\n file.skip(2 + 2); // length + language\n\n let hasShortCmap = false;\n const mappings = [];\n let 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 const 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 === 2) {\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\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 let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n 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 const 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 const end = segment.end;\n const 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 const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const 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 (let 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 headTable,\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 const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\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 const numOfSidebearings = numGlyphs - numOfMetrics;\n const 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 const 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 const 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 const glyf = source.subarray(sourceStart, sourceEnd);\n let 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 let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const 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 const 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 let 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 const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const 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 const 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 const 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 let 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 const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const 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 let 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 const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const 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 const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 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 const 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 const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const 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 const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const 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 const 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 const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const 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 const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const 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 const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let 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] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const 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 let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const 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] = 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 const 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 const 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 (let 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 let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let 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 const 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 const 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 const 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 const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\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 let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const 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 const 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 tables.head,\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 let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const 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 const 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: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\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 this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\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 const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let 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 const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\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 rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\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 const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let 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 if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\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] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\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 (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\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 // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\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\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const 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 const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n 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 const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const 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 (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const 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 const 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 const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const 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 const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const 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(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\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 const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const 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 const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const 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 const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\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 /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n width = isNum(width) ? width : this.defaultWidth;\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\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 let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const 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 let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\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(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\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.\nconst 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\nconst 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\nconst CFFParser = (function CFFParserClosure() {\n const 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 const 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 const properties = this.properties;\n const 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 const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const 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 const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const 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 let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const 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 const 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 let bytes = this.bytes;\n const bytesLength = bytes.length;\n let 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 const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let 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 let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const 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 let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let 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 const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let 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 const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const 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 let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const 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 let 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 let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const 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 const 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 if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\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\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\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) {\n // Width can be any number since its the difference\n // from nominalWidthX.\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 const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const 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 let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const 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 const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\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 const 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 const size = privateOffset[0];\n const 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 const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const 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 const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const 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 const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let 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 const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const 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 const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let 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 const 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 &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let 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 const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let 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 const 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 const 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 const 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 (let 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 const 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 const 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 const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const 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\nconst CFFTopDict = (function CFFTopDictClosure() {\n const 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 let 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\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const 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 let 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\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\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 (const 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 const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const 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 const 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 const cff = this.cff;\n const 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 const header = this.compileHeader(cff.header);\n output.add(header);\n\n const 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 const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let 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 const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const 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 const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const 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 const 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 const 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 const 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 let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const 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 const 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 let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n 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 // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let 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 const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const 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 const fontDictTracker = new CFFOffsetTracker();\n const 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 (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let 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 const 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 let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let 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 (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const 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 const 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 (let 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 const stringIndex = new CFFIndex();\n for (let 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 const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const 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 const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const 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 const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let 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 let 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 (let 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 CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\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\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 { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_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 // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\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-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-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"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// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\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[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\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.LiberationSerif = 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[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\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[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\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[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\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[92] = 344;\n t[94] = 83;\n t[97] = 352;\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[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\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[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\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[457] = 253;\n t[460] = 122;\n t[462] = 382;\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\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\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 { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(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 get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const 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 (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let 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\nexport { IdentityToUnicodeMap, ToUnicodeMap };\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 { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const 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 this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let 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 const 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 let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\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\nfunction 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\nfunction getUshort(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction 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\nfunction parseCmap(data, start, end) {\n const offset =\n getUshort(data, start + 2) === 1\n ? getLong(data, start + 8)\n : getLong(data, start + 16);\n const format = getUshort(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUshort(data, start + offset + 2); // length\n const 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 let idOffset = getUshort(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let 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 const 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\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const 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\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let 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 const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const 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\nfunction 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 let i = 0;\n const numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n let flags;\n let 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 const glyphIndex = (code[i + 2] << 8) | code[i + 3];\n i += 4;\n let 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 let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = ((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 const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n i += 2;\n }\n const instructionLength = (code[i] << 8) | code[i + 1];\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let 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 let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const 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 const 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\nfunction 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 const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let 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 const 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 const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let 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\nconst NOOP = [];\n\nclass 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 { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = 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 { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { 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 { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass 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\nclass 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\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUshort(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getLong(data, p + 8);\n const 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 const 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\nexport { FontRendererFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n if (flags & ARGS_ARE_XY_VALUES) {\n const abs1 = argument1 & 0x7f;\n argument1 = argument1 & 0x80 ? -abs1 : abs1;\n\n const abs2 = argument2 & 0x7f;\n argument2 = argument2 & 0x80 ? -abs2 : abs2;\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\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 { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction 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\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let 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 (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const 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 const 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 let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const 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(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\nexport { OpenTypeFileBuilder };\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 CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let 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\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\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 const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const 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\nfunction 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 const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(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 const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const 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 const headerBlock = getHeaderBlock(file, headerBlockLength);\n const 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 const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const 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 get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const 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 const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const 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(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 const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const 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(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const 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 const type2Subrs = [];\n let 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(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const 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 const 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 const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let 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 const 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 const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const 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 const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const 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 (let 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 const 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 const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\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.\nconst 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 */\nconst Type1CharString = (function Type1CharStringClosure() {\n const 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 class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let 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 const 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 const 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 const num2 = this.stack.pop();\n const 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 const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const 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 -= 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 const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let 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 */\nconst 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 const EEXEC_ENCRYPT_KEY = 55665;\n const 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 const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const 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 const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const 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 class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const 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 readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const 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() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let 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 let 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(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(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let 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 const 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 const 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 (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let 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(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let 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 const index = this.readInt();\n this.getToken(); // read in '/'\n const 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 const 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 shadow,\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\nconst 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\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = isStream(shading) ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\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 MeshShading(\n shading,\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 DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\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 let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const 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 const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, 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 const fnObj = dict.getRaw(\"Function\");\n const 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 const 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 const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let 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 const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(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] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let 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 return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\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 const 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\n readBits(n) {\n let buffer = this.buffer;\n let 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 const 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\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const 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\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const 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\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const 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 const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!isStream(stream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\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(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const 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 const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const 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 this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let 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 this.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 _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let 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 this.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 _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const 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 const 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 const 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 const 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 let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let 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 (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const 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 const 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 this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.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 this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const 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 getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\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 color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\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 shadow,\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 }\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 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 this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\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\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let 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 static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static 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 const fnArray = [];\n for (let 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 (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\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 let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const 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 let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const 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 let 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 const 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 const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const 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 < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let 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(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let 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 const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const 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 const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const 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 static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const 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 const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\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(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const 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 const 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 const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let 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\nfunction isPDFFunction(v) {\n let 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\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let 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\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.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\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\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\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\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\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\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 const 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 const 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 class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let 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 const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const 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 PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, 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\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.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\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 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\nimport { assert, shadow, unreachable, warn } 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 this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\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 (typeof name !== \"string\") {\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 (typeof name !== \"string\" && !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 !== null) {\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 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 (typeof name !== \"string\") {\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 LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, 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 MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\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 get _byteSize() {\n let byteSize = 0;\n this._imageCache.forEach(imageData => {\n byteSize += imageData.byteSize;\n });\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\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 (!this._imageCache.has(ref) && this._cacheLimitReached) {\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 /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\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 const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\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._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\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 GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\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 { 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\nconst 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\nconst 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 let j, jj;\n for (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 (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const 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.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const 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 let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let 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 // unless the string is very short.\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 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const 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 const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const 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 let 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 let 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 for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let 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 const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let 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 let highestLevel = -1;\n let lowestOddLevel = 99;\n let 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 let 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 const 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.\nconst 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\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.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n 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 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 {\n assert,\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const 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\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\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 const iFirstPIMXO = iFirstSave + 2;\n let i;\n for (i = 0; i < count; i++) {\n const arg = argsArray[iFirstPIMXO + 4 * i];\n const 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\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const 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 const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const 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 let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const 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 const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let 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.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const 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 const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let 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 let isSameImage = false;\n let iTransform, transformArgs;\n const 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 let iPIMXO = iFirstPIMXO + 4;\n for (let 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 const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let 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 const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const 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.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const 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 const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const 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 const iFirstPIXO = context.iCurr - 1;\n const 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 const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const 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 const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const 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.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const 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 const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const 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 const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let 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 let 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 let iEndText = iFirst + 4;\n for (let 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\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\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\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(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 _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 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\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.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 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 >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.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 (let 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 parameter 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\nexport { OperatorList };\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 \"./decode_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 const 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 const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const 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 const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (isName(filter)) {\n switch (filter.name) {\n case \"JPXDecode\":\n const 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(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\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(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\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(\"CS\") || dict.getRaw(\"ColorSpace\");\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} 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(\"D\", \"Decode\");\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 const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const 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 const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\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 interpolate,\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 const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let 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, interpolate };\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 const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let 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 let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let 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 const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let 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 const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let 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 let 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 const 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 &= (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 const smask = this.smask;\n const mask = this.mask;\n let 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 const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const 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 const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const 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 const 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 const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n let 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 let 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 const 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 const buffer = imgData.data;\n for (let 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 const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const 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 let 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 const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes);\n\n const comps = this.getComponents(imgArray);\n let 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 const 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 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 clearPrimitiveCaches,\n Dict,\n isDict,\n isName,\n isRef,\n isRefsEqual,\n isStream,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n isBool,\n isNum,\n isString,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\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 acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", isRef(value) ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof 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 arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!isDict(obj)) {\n return null;\n }\n\n const markInfo = Object.assign(Object.create(null), {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n });\n for (const key in markInfo) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n if (!isBool(value)) {\n continue;\n }\n markInfo[key] = value;\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!isDict(obj)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\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 setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\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, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\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 const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\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 get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(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 openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(key, value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (isStream(js)) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(key, value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\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 this.pageIndexCache.clear();\n this.nonBlendModesSet.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.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n });\n }\n\n getPageDict(pageIndex) {\n const capability = createPromiseCapability();\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache;\n let currentPageIndex = 0;\n\n function next() {\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const 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 // 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\n if (pageIndex === currentPageIndex) {\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 (!(currentNode instanceof Dict)) {\n capability.reject(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n return;\n }\n\n let count;\n try {\n count = currentNode.get(\"Count\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\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 let kids;\n try {\n kids = currentNode.get(\"Kids\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\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 let type;\n try {\n type = currentNode.get(\"Type\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n }\n if (\n isName(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 /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Map}\n */\n getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map();\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids;\n try {\n kids = currentNode.get(\"Kids\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n if (ex instanceof XRefEntryException && !recoveryMode) {\n throw ex;\n }\n addPageError(ex);\n break;\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n try {\n obj = this.xref.fetch(kidObj);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n if (ex instanceof XRefEntryException && !recoveryMode) {\n throw ex;\n }\n addPageError(ex);\n break;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n } else {\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 (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n if (isDict(obj, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\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 const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\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 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)) {\n if (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 } else {\n action = destDict.get(\"AA\");\n if (isDict(action)) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\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 \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((isNum(flags) ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (isRef(obj)) {\n refs.push(obj.toString());\n } else if (isString(obj)) {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\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 = jsAction.getString();\n } else if (isString(jsAction)) {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${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 const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\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\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\nimport { isDict, RefSet } from \"./primitives.js\";\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 map = new Map();\n if (!this.root) {\n return map;\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 continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\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 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\nexport { NameTree, NumberTree };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\n\nfunction 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/**\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 */\nclass FileSpec {\n constructor(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 get filename() {\n if (!this._filename && this.root) {\n const 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\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 let content = null;\n if (this.contentRef) {\n const fileObj = this.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 content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { 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\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isName, isRef } from \"./primitives.js\";\nimport { isString, stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!isDict(roleMapDict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!isName(value)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = isName(nameObj) ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (isRef(objRef)) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (isRef(kid)) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (isDict(kid)) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (isRef(pageRef)) {\n pageObjId = pageRef.toString();\n }\n\n const type = isName(kidDict.get(\"Type\")) ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId: isRef(kidDict.getRaw(\"Stm\"))\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId: isRef(kidDict.getRaw(\"Obj\"))\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (isRef(ref)) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (isDict(obj)) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplifed object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (isString(alt)) {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (isString(lang)) {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isStream, Ref, RefSet } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n Array.isArray(value) ||\n isStream(value)\n );\n}\n\nfunction 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/**\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 */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\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 warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (isStream(currentNode)) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\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\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.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(` /${escapePDFName(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 = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\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(`/${escapePDFName(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 (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (isDict(value)) {\n writeDict(value, buffer, transform);\n } else if (isStream(value)) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\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 writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\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.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\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, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && 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 { incrementalUpdate, writeDict };\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 isArrayEqual,\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 \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const 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 encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const 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 decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const 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\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const 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 const 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 let 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 const 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})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n 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(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 <<= places;\n }\n }\n\n rotateRight(places) {\n let 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() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let 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(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(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst 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 const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let 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 const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const 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 const 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 let 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\nconst 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 const 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 = false) {\n // initial hash values\n let 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 const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const 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 const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let 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 let 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})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\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 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 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 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 ^= 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 ^= 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\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const 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 const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const 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 const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const 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 const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, 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 const 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 let remainder = 0;\n for (let 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 class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const 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 const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const 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 const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const 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 const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const 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\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n 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 // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\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\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\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 const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let 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 const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let 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 let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let 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 const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let 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 const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const 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 let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let 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 const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; 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 const 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 const cryptFilter = cf.get(name.name);\n let 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(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\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 // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let 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 const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (isDict(cfDict) && isName(streamCryptoName)) {\n cfDict.suppressEncryption = true; // See comment below.\n const 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\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let 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 let 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 const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const 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 const 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 const 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\n // objects (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 createCipherTransform(num, gen) {\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 const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const 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 calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\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 { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let 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 const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursivly to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // Javascript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a &nbsp is unbreakable\n // but in real life Acrobat can break strings on &nbsp.\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(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._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n 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(recoveryMode = false) {\n let 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 (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const 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 (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n 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 const 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 let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof 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(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 const stream = parser.lexer.stream;\n const 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 let 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 let first = tableState.firstEntryNum;\n const 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 (let 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 const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const 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(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 const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let 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(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\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 (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const 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() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let 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 const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let 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 const 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 const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const 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 this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let 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 const token = readToken(buffer, position);\n let 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\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\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 const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\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 for (let 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 (let 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 const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\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 // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const 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 = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\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 let obj = parser.getObj();\n let 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 const 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 !((obj = parser.getObj()) instanceof BaseStream)\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 (obj instanceof Ref) {\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 this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\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 // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const 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 const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const 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 (!(xrefEntry instanceof BaseStream)) {\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 (!(stream instanceof BaseStream)) {\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(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = 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 offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\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() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n warn,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n throw new Error(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n warn('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n return reason;\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\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.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = 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 streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: 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\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 sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 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\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 for (const reader of this._rangeRequestReaders.slice(0)) {\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\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"],"names":["constructor","finished","finish","terminate","ensureNotTerminated","setup","testMessageProcessed","handler","data","setVerbosityLevel","WorkerMessageHandler","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","isPureXfa","startWorkerTask","reason","finishWorkerTask","htmlForXfa","pdfManagerCapability","source","newPdfManager","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","arrayByteLength","total","Math","reject","pdfInfo","ex","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","getPdfManager","stream","pageRef","Ref","ref","page","promises","pageIndex","newRefs","xfaData","refs","x","a","xfa","acroForm","xfaDatasetsRef","hasXfaDatasetsEntry","Array","ii","acroFormRef","xref","newXrefInfo","Object","infoObj","xrefInfo","isString","stringToPDFString","rootRef","encryptRef","newRef","infoRef","info","fileIds","originalData","hasXfa","start","VerbosityLevel","Date","intent","cacheKey","annotationStorage","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","includeMarkedContent","combineTextItems","waitOn","cleanupPromise","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","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","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","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","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","baseUrl","options","dots","stringToUTF8String","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","InvisibleCharactersRegExp","replaceInvisible","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","pos","item","stringToBytes","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","hexNumbers","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","b","c","first","second","sx","sy","normalizeRect","rect","intersect","orderedX","rect1","rect2","orderedY","result","bezierBoundingBox","tvalues","bounds","t","b2ac","sqrtb2ac","t1","t2","j","jlen","mt","PDFStringTranslateTable","code","match","buf","char","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","resolve","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","CIRCULAR_REF","Symbol","EOF","Name","nameCache","nameValue","_clearCache","Cmd","cmdCache","cmdValue","nonSerializable","assignXref","size","key2","key3","getAsync","getArray","getRaw","getKeys","getRawValues","set","has","forEach","callback","empty","emptyDict","merge","mergeSubDicts","mergedDict","properties","dict","property","values","subDict","Dict","refCache","toString","key","gen","refValue","parent","put","remove","clear","putAlias","isName","v1","v2","isEmpty","isDataLoaded","getByte","getBytes","forceClamped","peekByte","peekedByte","peekBytes","getUint16","b0","getInt32","getByteRange","getString","bytesToString","skip","reset","moveStart","makeSubStream","getBaseStreams","createValidAbsoluteUrl","onLoadedStream","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","loadXfaFonts","loadXfaImages","serializeXfaData","cleanup","manuallyTriggered","ensure","requestRange","requestLoadedStream","sendProgressiveData","updatePassword","parseDocBaseUrl","Promise","args","getMissingChunks","chunks","numChunksLoaded","onReceiveData","chunkSize","begin","end","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","strEnd","subarray","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","_send","streamTypes","fontTypes","addStreamType","addFontType","stopWhenFound","visited","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","offset","ch","positionPattern","component","name","parseInt","isRef","parents","entry","_collectJS","js","isStream","list","actions","additionalActionsDicts","additionalActions","action","eventType","actionDict","objectSize","XMLEntities","entity","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","weight","fontWeight","cssFontInfo","angle","parseFloat","isNaN","italicAngle","URL_OPEN_METHODS","regex","jsUrl","newWindow","arrayBuffer","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","idCounters","createObjId","getPageObjId","_getInheritableProperty","isDict","dictArray","content","resources","_getBoundingBox","box","mediaBox","cropBox","userUnit","isNum","view","isArrayEqual","rotate","_onSubStreamError","getContentStream","bbox","partialEvaluator","idFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","newRefsPromises","annotation","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","dataPromises","pageListPromise","opList","transparency","operatorList","annotations","pageOpList","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","extractTextContent","getStructTree","structTreeRoot","structTree","_parseStructTree","tree","getAnnotationsData","annotationsData","annots","_parsedAnnotations","parsedAnnotations","annotationPromises","jsActions","collectActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","isArrayBuffer","getDocId","createFontId","parse","linearization","Linearization","err","startXRef","find","step","startXRefLength","found","isWhiteSpace","checkHeader","MAX_PDF_VERSION_LENGTH","version","parseStartXRef","numPages","num","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","field","isSignature","isInvisible","entries","template","datasets","config","connectionSet","localeSet","stylesheet","xfaFactory","xfaImagesDict","keys","xfaImages","fontRes","pdfFonts","initialState","clone","fonts","descriptor","validateCSSFont","missingFonts","reallyMissingFonts","getXfaFontName","fontInfo","getXfaFontDict","formInfo","hasFields","hasAcroForm","hasSignatures","fields","sigFlags","hasOnlyDocumentSignatures","documentInfo","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","Language","EncryptFilterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","isBool","fingerprints","hash","hex","idArray","validate","hashOriginal","hashModified","calculateMD5","hexString","_getLinearizationPage","catalog","cachedPromise","promise","globalIdFactory","nonBlendModesSet","checkFirstPage","recoveryMode","checkLastPage","pagesTree","reasonAll","pageDict","_collectFieldObjects","partName","kids","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","baseWidths","baseMapping","metrics","fontName","normalizeFontName","fontMap","rescaledBaseWidths","w","currentCode","newWidths","unicode1","unicode","currentArray","widths","getXfaFontWidths","systemInfo","CalibriBoldFactors","CalibriBoldMetrics","lineHeight","lineGap","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","isStandardFont","subtype","glyphsUnicodeMap","getUnicodeForGlyph","charCodeToGlyphId","isSymbolicFont","baseEncoding","charCode","glyphId","glyphNames","getEncoding","builtInEncoding","differences","glyphName","standardGlyphName","recoverGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getGlyphsUnicode","getArrayLookupTableFactory","getDingbatsGlyphsUnicode","getSpecialPUASymbols","getLookupTableFactory","mapSpecialUnicodeValues","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","charCodeAt","push","join","create","collectFields","_create","id","parameters","fieldType","_getPageIndex","annotDict","defaultColor","rgbColor","color","ColorSpace","quadPoints","quadPointsLists","jj","y","quadPointsList","quadPoint","minX","minY","xRatio","yRatio","params","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","hasAppearance","modificationDate","hasOwnCanvas","kidIds","kid","_hasFlag","_isViewable","_isPrintable","mustBeViewed","storageEntry","mustBePrinted","viewable","printable","_parseStringHelper","dir","bidi","setTitle","setContents","setModificationDate","setFlags","flags","hasFlag","setRectangle","setColor","getRgbColor","setBorderAndBackgroundColors","mk","setBorderStyle","dictType","array","setAppearance","appearanceStates","normalAppearanceState","as","appearance","isUsingOwnCanvas","appearanceDict","matrix","getTransformMatrix","fallbackFontDict","getFieldObject","strokeColor","fillColor","_constructFieldName","fieldName","loopDict","setWidth","width","maxWidth","maxHeight","setStyle","style","setDashArray","forceStyle","dashArray","isValid","allZeros","validNumber","element","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","XFAFactory","setCreationDate","_setDefaultAppearance","maxX","maxY","pointsArray","pointsCallback","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","fieldValue","defaultFieldValue","defaultAppearance","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","mergedResources","_decodeFormValue","formValue","hasFieldFlag","path","AP","encrypt","originalTransform","newTransform","isAscii","stringToUTF16BEString","bufferOriginal","writeDict","bufferNew","_getAppearance","isPassword","lineCount","defaultPadding","hPadding","totalHeight","totalWidth","descent","vPadding","alignment","encodedString","escapeString","renderedText","_getFontData","_computeFontSize","roundWithOneDigit","FONT_FACTOR","fontSize","numberOfLines","height","_renderText","glyphs","scale","glyph","shift","_getSaveFieldResources","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","_getCombAppearance","combWidth","positions","text","renderedComb","_getMultilineAppearance","lines","padding","_splitLine","line","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","comb","editable","hidden","savedAppearance","_saveCheckbox","evaluator","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","_processCheckBox","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","Catalog","destDict","resultObj","option","isOptionArray","exportValue","displayValue","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentRect","parentFlags","lineCoordinates","strokeAlpha","interiorColor","fillAlpha","borderWidth","borderAdjust","extra","points","controlPointsDistance","x0","y0","x1","y1","xMid","yMid","xOffset","yOffset","rawVertices","vertex","vertices","rawInkLists","inkList","blendMode","dy","xEnd","file","operation","fn","fontColor","colorCmd","escapePDFName","COMPONENTS","alpha01","w1","h1","newIndex","xScaled","w1Scanline","py","oldIndex","dest","src","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","count","originalWidth","rgbBuf","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","usesZeroToOneRange","_cache","csRef","csName","localColorSpaceCache","getCached","localColorSpace","parseAsync","parsedColorSpace","cachedColorSpace","_parse","cs","colorSpaces","resourcesCS","mode","whitePoint","blackPoint","gamma","numComps","alt","altCS","baseCS","hiVal","tintFn","pdfFunctionFactory","decode","singletons","tmpBuf","baseNumComps","baseBuf","scaled","tinted","srcOffset","inputLength","outputDelta","lookupPos","destOffset","decodeMap","q","bits","DeviceCmykCS","k","convertToRgb","CalGrayCS","A","AG","L","val","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","B","AGR","BGG","CGB","Y","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","bs","maxVal","M","N","fn_g","g","DefaultPartialEvaluatorOptions","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","parsingArray","maybeBM","normalizeBlendMode","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","TimeSlotManager","_pdfFunctionFactory","newOptions","newEvaluator","hasBlendModes","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","fetchBuiltInCMap","cachedData","response","fetch","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","filename","buildFormXObject","xobj","optionalContent","group","groupOptions","isolated","knockout","groupSubtype","colorSpace","_sendImgData","cacheGlobally","transfers","imgData","buildPaintImageXObject","isInline","image","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","objId","PDFImage","byteSize","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","tmp","stateManager","handleTransferFunction","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","tilingOpList","patternResources","patternDict","operatorListIR","tilingPatternIR","getTilingPatternIR","localTilingPatternCache","handleSetFont","fontArgs","translated","loadedName","state","handleText","isAddToPathSet","PartialEvaluator","ensureStateFont","gStateRef","gState","isSimpleGState","gStateObj","gStateKeys","localGStateCache","loadFont","errorFont","fontRef","partialMsg","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translatedFont","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","parseShading","localShadingPatternCache","Pattern","patternIR","handleColorN","patternName","rawPattern","patterns","localTilingPattern","pattern","typeNum","shading","_parseVisibilityExpression","MAX_NESTING","operator","currentResult","raw","nestedResult","parseMarkedContentProps","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","self","xobjs","preprocessor","timeSlotManager","next","promiseBody","isValidName","localImage","resolveXObject","globalImage","combinedGlyphs","arrLength","arrItem","shadingRes","patternId","localGStateObj","extGState","closePendingRestoreOPS","getTextContent","seenStyles","WhitespaceRegexp","DiacriticRegExp","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","tsm","glyphHeight","ascent","trm","getCurrentTextTransform","scaleLineX","scaleCtmX","scaleFactor","textChunk","bidiResult","replaceWhitespace","currentTransform","posX","posY","lastPosX","lastPosY","advanceY","advanceX","appendEOL","flushTextContentItem","addFakeSpaces","charSpacing","scaledDim","glyphUnicode","compareWithLastPosition","ensureTextContentItem","transf","runBidiTransform","batch","enqueueChunk","fontNameArg","fontSizeArg","updateAdvanceScale","spaceFactor","elements","buildTextContentItem","extraSpacing","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","resolveGState","tag","mcid","stop","extractDataStructures","toUnicodePromise","baseDict","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","baseEncodingName","encoding","diffEncoding","index","isNonsymbolicFont","readToUnicode","builtToUnicode","_simpleFontToUnicode","forceGlyphs","toUnicode","codeStr","buildToUnicode","ucs2CMapName","ucs2CMap","useCMap","cid","ucs2","cmap","map","token","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","vmetrics","defaultVMetrics","vmetric","firstChar","baseFontName","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","widthsByGlyphName","preEvaluateFont","composite","df","lastChar","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","translateFont","isType3Font","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","isInternalFont","glyphScaleFactors","subtypeEntry","length1","length2","length3","fixedPitch","fontMatrix","scaleFactors","cidEncoding","cMap","buildFontPaths","accent","send","fallback","loadType3Data","type3Evaluator","type3Dependencies","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","dummyOperatorList","_removeType3ColorOperators","charBBox","old","prev","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","carriageReturn","opMap","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","lexer","EvaluatorPreprocessor","savedStatesDepth","read","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","builtInCMap","addCodespaceRange","mapCidRange","high","low","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","contains","charCodeOf","getMap","readCharCode","codespaceRanges","nn","codespaceRange","kk","out","getCharCodeLength","isIdentityCMap","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","sign","readString","len","s","header","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","isCmd","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","createBuiltInCMap","useCodespaceRanges","parseCMap","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","allowStreams","refill","tryShift","e","getObj","cipherTransform","buf1","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","nextObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","computeAdler32","cacheEntry","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","filterArray","paramsArray","makeFilter","xrefStats","earlyChange","specialChars","knownCommands","nextChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","done","charBuffered","getName","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","peekObj","streamPos","currentChar","beginInlineImagePos","skipToNextLine","allowZeroValue","linDict","hints","hintsLength","hint","parser","obj1","obj2","obj3","getInt","getHints","objectNumberFirst","endFirst","mainXRefEntriesOffset","pageFirst","readBlock","TILDA_CHAR","Z_LOWER_CHAR","bufferLength","input","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","buffer2","bufEnd","streams","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","code1","readNextChar","refLine","codingLine","columns","refPos","blackPixels","code2","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","table","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","getBits","codeSize","codeBuf","getCode","codes","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","globalsStream","globals","dataLength","getContexts","decoder","contextCache","cache","contexts","bit","readBits","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","log2","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","collectiveWidth","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","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","buildTree","decodeNode","htOffset","reader","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","readBit","numBits","byteAlign","currentIndex","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","maybeScanLines","blockRow","receive","decodeHuffman","diff","receiveAndExtend","rs","z","blockOffset","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","decodeMcu","fileMarker","findNextFileMarker","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","l","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","SubbandsGainLog2","LL","LH","HL","HH","head","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","context","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","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","pxIndex","precinctIterationSizes","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","layerNumber","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","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","delta","copyCoefficients","left","top","resultImages","transformedTiles","transformTile","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","y2","qcdOrQcc","levelsLength","level","currentLevel","incrementValue","nextLevel","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","labels","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","calculate","ll","j1","j2","iterate","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","alpha","beta","K_","current","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","colors","readBlockTiff","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","readBlockPng","pixBytes","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","matchesForCache","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","glyphMap","toFontChar","shouldThrow","msg","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","hasGlyph","fontCharCode","codeIndices","getRanges","numTables","string16","string32","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","proto","strings","createPostscriptName","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","baseName","serifFonts","fallbackName","getFontFileType","cff","adjustWidths","amendFallbackToUnicode","renderer","FontRendererFactory","exportData","extraProperties","exportDataProperties","fallbackToSystemFont","nonStdFontMap","isMappedToStandardFont","isNarrow","applyStandardFontGlyphMap","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","tables","readTableEntry","checksum","previousPosition","ttf","searchRange","entrySelector","rangeShift","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","fontNameParts","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","fallbackData","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","correctlySorted","nextBytes","nextPlatformId","int16","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","signedInt16","idRangePos","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","caretOffset","numOfMetrics","macStyle","headTable","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","repeat","glyphDataLength","destStart","int32","indexToLocFormat","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNameIndexes","customNames","stringLength","propertiesObj","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","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","isGlyphLocationsLong","glyfTable","locaTable","isLocationLong","advanceWidth","lsb","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","convertCidString","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","mapping","newCharCodeToGlyphId","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","spaceWidth","possibleSpaceReplacements","charcode","_charToGlyph","isSpace","widthCode","isInFont","operatorListId","fontChar","charsToGlyphs","getCharPositions","glyphCacheValues","encodeString","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","error","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","min","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","topDict","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","privateDict","parseHeader","hdrSize","offSize","endPos","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","pair","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","duplicateFirstGlyph","glyphZero","hasGlyphId","getSID","add","setByKey","valueLength","setByName","hasName","getByName","removeByName","createTables","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","getFDIndex","glyphIndex","isTracking","track","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","compile","xuid","compiled","topDictTracker","fontDictTrackers","encodeNumber","EncodeFloatRegExp","encodeFloat","CFFCompiler","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","outputLength","subrs","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","charStringsIndex","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","getStdFontMap","getFontNameToFileMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","amend","getCharset","getGlyphMapping","charsets","type1FontGlyphMapping","_createBuiltInEncoding","numSubrs","getUshort","getLong","idOffset","groups","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","compileGlyphImpl","hasBuiltPath","cffInfo","glyphNameMap","parseCmap","parseCff","parseGlyfTable","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","Glyph","getSize","write","totalSize","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","xMiddle","endPt","numberOfPt","instructions","allXCoordinates","xCoordinates","yCoordinates","pointFlags","contours","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","abs","argument1","argument2","abs1","abs2","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","getSearchParams","maxPower2","entrySize","toArray","sfnt","tablesNames","tableOffsets","paddedLength","writeData","writeInt16","tableName","quad","writeInt32","addTable","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","charstringsLen","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","wrap","charsetArray","subrIndex","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","encoded","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","decrypt","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","SMALL_NUMBER","getIR","t0","domainArr","extendStart","extendEnd","extendArr","distance","r1","r2","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","BaseShading","coordsArr","shadingType","r0","csNumComps","hasData","align","readFlag","readCoordinate","bitsPerCoordinate","xi","yi","readComponents","ci","getB","lut","t_","buildB","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","decodeContext","bitsPerFlag","colorFn","patchMesh","verticesPerRow","_decodeType4Shading","coords","operators","ps","verticesLeft","f","coord","_decodeType5Shading","_decodeType6Shading","tmp1","tmp2","tmp3","tmp4","_decodeType7Shading","_buildFigureFromPatch","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","MeshShading","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","_updateBounds","_packData","coordsPacked","xy","colorsPacked","figures","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","createFromArray","fnRef","localFunction","_localFunctionCache","getSampleArray","sampleMul","strBytes","strIdx","parseArray","fnArray","constructSampled","ymin","domain","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolated","constructStiched","fnRefs","fns","dmin","dmax","rmin","rmax","constructPostScript","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","MAX_STACK_SIZE","PostScriptStack","pop","copy","roll","execute","counter","PostScriptCompiler","visit","arg","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","max","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","opCache","getOperator","opValue","PostScriptToken","getByRef","onlyRefs","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_byteSize","imageData","_cacheLimitReached","GlobalImageCache","shouldCache","pageIndexSet","addPageIndex","addByteSize","setData","onlyData","baseTypes","arabicTypes","temp","startLevel","isLTR","strLength","createBidiText","numBidi","charType","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k1","k2","h2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","iFirstPIMXO","iFirstSave","argsArray","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","kind","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","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","_optimize","flush","iCurr","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","ready","addOp","OperatorList","addDependency","addDependencies","addOpList","_transfers","addend","isMask","isIndexed","maskDict","buildImage","smaskData","maskData","createMask","computedLength","haveFullData","drawWidth","drawHeight","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","createImageData","forceRGBA","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","lang","needsRendering","collection","metadata","streamRef","suppressEncryption","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","toplevelPagesDict","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","title","outlineItem","unsafeUrl","bold","italic","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","onParsed","contentGroupRefs","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","nestedName","parseOrder","MAX_NESTED_LEVELS","creator","baseState","on","parseOnOff","off","setActualNumPages","hasActualNumPages","_pagesCount","destinations","dests","fetchDestination","getDestination","allDest","_readDests","pageLabels","_readPageLabels","prefix","numberTree","nums","currentLabel","labelDict","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","jsDict","appendIfJavaScriptDict","translatedFonts","getPageDict","nodesToVisit","visitedNodes","pagesRef","pageKidsCountCache","currentPageIndex","currentNode","getAllPageDicts","posInKids","queueItem","addPageError","kidObj","addPageDict","getPageIndex","cachedPageIndex","isRefsEqual","parentRef","kidPromises","parseDestDictionary","actionType","actionName","include","urlDict","remoteDest","JSON","namedAction","jsAction","jsURL","recoverJsURL","addDefaultProtocol","tryConvertEncoding","getAll","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","fileObj","serializable","lowerCaseName","xmlDocument","_repair","_getSequence","_parseArray","rdf","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","_resolveEntities","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","q2","complexDoctype","doctypeContent","isClosed","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","firstChild","nextSibling","childNodes","child","hasChildNodes","searchNode","paths","siblingPos","dump","encodeToXmlString","attribute","hasAttributes","parseFromString","isWhitespaceString","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","init","readRoleMap","roleMapDict","role","nameObj","parseKids","pageObjId","objRef","parseKid","kidDict","refObjId","parentTree","parentArray","addNode","parentNode","addTopLevelNode","kidRef","kidElement","nodeToSerializable","mayHaveChildren","load","rawValue","_walk","nodesToRevisit","pendingRequests","manager","foundMissingData","addChildren","writeValue","string","roundedValue","writeArray","numberToString","writeStream","time","md5Buffer","filesize","md5BufferLen","writeString","xml","parseXFAPath","oldXfa","newXfa","writeXFADataForAcroform","updateXFA","newXref","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","computeMD5","sizes","structSize","tableLength","bufferLen","footer","writeInt","keyLength","encryptBlock","decryptBlock","h0","h3","padded","rotateArg","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","assign","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","sigmaPrime","sigma","maj","calculateSHA512","mode384","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","lastBlock","psLen","cipher","rcon","t3","t4","checkOwnerPassword","hashData","ownerValidationSalt","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","combinedLength","userBytes","combinedArray","remainder","calculateSHA384","calculatePDF20Hash","createStream","decryptString","encryptString","strLen","pad","crypto","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","fileId","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","isAes","cryptFilter","cf","cfm","buildObjectKey","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","createCipherTransform","buildCipherConstructor","cipherConstructor","hasMoreData","binder","_createPagesHelper","iterator","nextIteration","setTimeout","_createPages","getBoundingBox","getNumPages","setImages","setFonts","typeface","stripQuotes","appendFonts","getPages","pages","serializeData","_createDocument","getRichTextAsHtml","newRoot","XhtmlNamespace","attr","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","hasChildren","dumped","HTMLResult","availableSpace","allAttr","setAttr","ancestors","somExpression","usehref","use","protoProto","newAncestors","protoValue","XFAObject","clonedChild","allTransparent","dataNode","tagName","utf8TagName","utf8Name","hasNS","dimConverters","pt","cm","mm","in","measurementPattern","def","getMeasurement","conv","den","excluded","viewname","FAILURE","EMPTY","isBreak","breakNode","success","$buildXFAObject","ns","form","pdf","sourceSet","xdc","xdp","xfdf","xhtml","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","somCache","noExpr","cacheName","formCalc","dotDotAllowed","useCache","parseExpression","isQualified","container","cached","isFinite","acc","nsId","createNodes","_isConsumeData","_isMatchTemplate","bind","_bindValue","formNode","createText","_findDataByNameToConsume","generator","isValue","_setProperties","targetNodes","targetNode","targetParent","attrs","Reflect","_bindItems","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","_createOccurrences","occur","currentNumber","nodeClone","_getOccurInfo","_setAndBind","_bindElement","uselessNodes","dataChildren","dataChild","global","picture","createDataNode","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","borderExtra","templateNode","nodeValue","assist","assistTitle","ariaRole","ariaLevel","class","target","pageArea","nextPageArea","contentAreas","indexForCurrent","indexForTarget","currentPageArea","saved","savedMethod","extraNode","edge","edgeStyle","measureToString","xmlns","overflow","arc","cx","cy","rx","ry","startAngle","sweepAngle","largeArc","vectorEffect","viewBox","preserveAspectRatio","svg","hasMargin","display","getRelevant","getContainedChildren","toStyle","isPrintOnly","html","getRatio","valueToHtml","edges","defaultEdge","insets","edgeStyles","cornerStyles","grandpa","htmlButton","event","href","fixURL","_setValue","savedReserve","setPara","exportedValue","checked","fieldId","groupId","className","dataId","xfaOn","xfaOff","ariaLabel","ui","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","getStringOption","getColor","classNames","setTabIndex","fixDimensions","savedW","savedH","layoutNode","isBroken","setFirstUnsplittable","checkDimensions","unsetFirstUnsplittable","setMinMaxDimensions","applyAssist","computeBbox","createWrapper","linecap","flushHTML","addHTML","getAvailableSpace","setAccess","attempt","numberInLine","prevHeight","isSplittable","columnWidths","layoutClass","isLrTb","maxRun","marginH","marginV","caption","borderDims","uiW","uiH","getBorderDims","aElement","htmlValue","captionHeight","inputHeight","ggrandpa","propName","altPropName","setFontFamily","atob","blob","objectFit","thickness","startColor","endColor","margin","getBBox","originalMin","leader","trailer","addLeader","addTrailer","numberOfUse","xfaName","pageSetIndex","pageNumber","parity","fixTextIndent","corner","cornerStyle","bgColor","targetType","startNew","breakBefore","handleBreak","savedNoLayoutFailure","overflowExtra","handleOverflow","breakAfter","kv","overflowNode","firstUnsplittable","currentContentArea","noLayoutFailure","pagePosition","oddOrEven","blankOrNotBlank","paraStack","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","hasSomething","hasSomethingCounter","startIndex","targetPageArea","htmlContentAreas","contentArea","space","para","valueName","TemplateNamespace","appearanceFilter","area","barcode","bindItems","bookend","boolean","border","break","button","certificate","certificates","checkButton","choiceList","connect","dateTime","dateTimeEdit","decimal","defaultUi","digestMethod","digestMethods","draw","encryptData","encryption","encryptionMethod","encryptionMethods","exData","exObject","exclGroup","extras","float","hyphenation","imageEdit","integer","issuers","keep","keyUsage","linear","lockDocument","manifest","mdp","medium","message","numericEdit","oid","oids","pageSet","passwordEdit","radial","reasons","script","setProperty","signData","signing","solid","speak","stipple","subform","subformSet","subjectDN","subjectDNs","submit","textEdit","timeStamp","toolTip","traversal","traverse","variables","htmlFromFailing","createLine","ERROR","getTransformedBBox","converters","anchorType","colSpan","presence","hAlign","measure","fontFinder","layoutText","newStyle","wrapper","insetsH","insetsW","indent","nodeStyle","getCurrentPara","valueStyle","paraStyle","xfaFont","pdfFont","selectFont","myriad","addPdfFont","getDefault","mustWarn","maybe","family","real","lineNoGap","WIDTH_FACTOR","posture","letterSpacing","defaultFont","pushData","lastFont","popFont","topFont","addPara","addString","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","compute","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","serialize","storage","rootNameSpace","richText","usedTypefaces","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","buildRoot","build","hasNamespaceDef","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","namespaceToUse","hasNamespace","isNsAgnostic","_searchNamespace","_addNamespacePrefix","prefixStack","_getNamespaceToUse","clean","connection","CONFIG_NS_ID","unicodeRange","unicodeRegex","numbers","ConfigNamespace","acrobat","acrobat7","ADBE_JSConsole","ADBE_JSDebugger","addSilentPrint","addViewerPreferences","adjustData","adobeExtensionLevel","agent","alwaysEmbed","amd","autoSave","batchOutput","behaviorOverride","change","common","compress","compressLogicalStructure","compressObjectStream","compression","conformance","contentCopy","copies","currentPage","debug","defaultTypeface","destination","documentAssembly","driver","duplexOption","dynamicRender","embed","encryptionLevel","enforce","equate","equateRange","exclude","excludeNS","flipLabel","formFieldFilling","groupParent","ifEmpty","includeXDPContent","incrementalLoad","incrementalMerge","interactive","jog","labelPrinter","linearized","locale","log","mediumInfo","messaging","modifyAnnots","msgId","nameAttr","neverEmbed","numberOfCopies","outputBin","outputXSL","overprint","packets","pageOffset","pageRange","pagination","paginationOverride","part","pcl","pdfa","pickTrayByPDFSize","plaintextMetadata","present","print","printHighQuality","printScaling","printerName","producer","relevant","rename","renderPolicy","runScripts","scriptModel","severity","silentPrint","staple","startNode","startPage","submitFormat","submitUrl","subsetBelow","suppressBanner","tagged","templateCache","threshold","to","trace","uri","validateApprovalSignatures","validationMessaging","versionControl","webClient","whitespace","window","xsl","zpl","CONNECTION_SET_NS_ID","ConnectionSetNamespace","effectiveInputPolicy","effectiveOutputPolicy","rootElement","soapAction","soapAddress","wsdlAddress","wsdlConnection","xmlConnection","xsdConnection","DATASETS_NS_ID","DatasetsNamespace","LOCALE_SET_NS_ID","LocaleSetNamespace","calendarSymbols","currencySymbol","currencySymbols","datePattern","datePatterns","dateTimeSymbols","day","dayNames","era","eraNames","meridiem","meridiemNames","month","monthNames","numberPattern","numberPatterns","numberSymbol","numberSymbols","timePattern","timePatterns","typeFace","typeFaces","SIGNATURE_NS_ID","SignatureNamespace","STYLESHEET_NS_ID","StylesheetNamespace","XDP_NS_ID","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","styleStr","newValue","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","NoWhites","checkStyle","mustPop","mapStyle","siblings","body","br","li","ol","span","sub","sup","ul","getNewRef","resetNewRef","setStartXRef","trailerDict","processXRefTable","entryNum","parserBuf1","parserBuf2","readXRefTable","tableState","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","generation","typeByte","typeFieldWidth","offsetByte","generationByte","indexObjects","TAB","PERCENT","LT","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","updateEntries","uncompressed","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","pagesDict","pagesCount","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetchUncompressed","fetchCompressed","tableOffset","fetchIfRefAsync","fetchAsync","getCatalogObj","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","cbSourceName","cbTargetName","comObj","sourceName","targetName","ah","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","desiredSize","pull","pullCapability","cancel","cancelCapability","_createStreamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","_processStreamMessage","streamController","_deleteStreamController","destroy","getFullReader","getRangeReader","cancelAllRequests","readableStream","headersReady","isStreamingSupported","isRangeSupported","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}
\No newline at end of file